構建陣列時出現奇怪的問題。我開始了與一個數組,看起來像這樣:以不同編碼風格構建陣列的問題
Array (
[0] => Array (
[tag_id] => 19
[tag_translation_id] => 12
[fk_language_id] => 1
[fk_tag_id] => 19
[tag_name] => test
)
[1] => Array (
[tag_id] => 20
[tag_translation_id] => 14
[fk_language_id] => 1
[fk_tag_id] => 20
[tag_name] => testa
)
[2] => Array (
[tag_id] => 20
[tag_translation_id] => 15
[fk_language_id] => 3
[fk_tag_id] => 20
[tag_name] => fdfda
)
)
我想要做的就是每個結果與同TAG_ID一個陣列合併。這工作:
$tags = array();
foreach($results->as_array() as $key=>$result)
{
if(!in_array($result['tag_id'], $tags))
{
$tags[$result['tag_id']] = array();
}
}
foreach($results->as_array() as $result)
{
array_push($tags[$result['tag_id']], array($result['fk_language_id'] , $result['tag_name']));
}
這是預期的結果:
Array (
[19] => Array (
[0] => Array (
[0] => 1
[1] => test
)
)
[20] => Array (
[0] => Array (
[0] => 1
[1] => testa
)
[1] => Array (
[0] => 3
[1] => fdfda
)
)
)
不過,我有兩個迴路在這裏,我知道這是不理想的。爲什麼這些不起作用?
$tags = array();
foreach($results->as_array() as $key=>$result)
{
$tags[$result['tag_id']] .= array($result['fk_language_id'] , $result['tag_name']);
}
有了這個例子中,我得到兩個空數組...
Array ([19] => Array [20] => ArrayArray)
甚至......
$tags = array();
foreach($results->as_array() as $key=>$result)
{
if(!in_array($result['tag_id'], $tags))
{
$tags[$result['tag_id']] = array();
}
array_push($tags[$result['tag_id']], array($result['fk_language_id'] , $result['tag_name']));
}
由於某種原因與覆蓋的二數組的第一個值第二個數組的第二個值。
Array (
[19] => Array (
[0] => Array (
[0] => 1
[1] => test
)
)
[20] => Array (
[0] => Array (
[0] => 3
[1] => fdfda
)
)
)
我在做第二個例子中的錯誤是什麼?
這是最後一個例子的粗略等價物,並且不起作用。這也消除了最後的結果。請記住,我需要連接多個結果。 + =給我不受支持的操作數類型。 –
你不需要協調。連接是連接兩個字符串,而不是合併數組。如果實際使用錯誤的操作數,'+ ='會給你不支持的操作數類型,也就是說,你做錯了什麼。檢查我編輯的答案 - 它給出你所需要的結果。 – mingos