2014-01-09 162 views
0

在一个foreach循环,我得到以下值:将元素追加到多维数组php中的数组?

$name = 'foo'; 
$id = '1'; 

现在,同样的名字可以以不同的ID多次出现,并且我想以形成阵列像这样:

$data = array('foo' => array('1','2','3'), 
       'bar' => array('4','7','98'), 
       'nee' => array('12','45','45')); 

我曾尝试:

$data = array(); 

foreach ($rows as $row) 
{ 
    $name = $row->name; 
    $id = $row->id; 

    $data[$name] = $id; 
} 

然而,这一切都返回的是:

的最后一个值:

$data = array( 'foo' => '3', 
        'bar' => '98', 
        'nee' => '45'); 

所以也不太清楚如何做到这一点。

回答

1

您需要追加到子数组,而不是直接赋值。如果$name尚不存在,则需要添加它。

$data = array(); 
foreach ($rows as $row) 
{ 
    $name = $row->name; 
    $id = $row->id; 
    if (isset($data[$name])) { 
    $data[$name][] = $id; 
    } else { 
    $data[$name] = array($id); 
    } 
} 
0

如果你的名字没有价值,你只需要添加它,否则你附加价值,现有:

$data = array(); 

foreach ($rows as $row) 
{ 
    $name = $row->name; 
    $id = $row->id; 

    if (isset($data[$name]) && is_array($data[$name])) { 
     $data[$name][] = $id; 
    } 
    else {$data[$name] = array($id);} 


} 
+0

如果'$ name'不存在'$ data'第一次? – Rikesh

+0

Okey我添加其他语句:) –