PHP使用array_push将元素添加到多维数组
Posted
技术标签:
【中文标题】PHP使用array_push将元素添加到多维数组【英文标题】:PHP add elements to multidimensional array with array_push 【发布时间】:2013-04-24 20:48:13 【问题描述】:我有一个多维数组 $md_array,我想将更多元素添加到子数组 recipe_type 和来自从表中读取数据的循环中的美食。
在循环中,我为每一行创建一个新表 $newdata:
$newdata = array (
'wpseo_title' => 'test',
'wpseo_desc' => 'test',
'wpseo_metakey' => 'test'
);
然后,使用 array_push()
我需要将 $newdata 数组附加到以下多维数组:
$md_array= array (
'recipe_type' =>
array (
18 =>
array (
'wpseo_title' => 'Salads',
'wpseo_desc' => 'Hundreads of recipes for Salads',
'wpseo_metakey' => ''
),
19 =>
array (
'wpseo_title' => 'Main dishes',
'wpseo_desc' => 'Hundreads of recipes for Main dishes',
'wpseo_metakey' => ''
)
),
'cuisine' =>
array (
22 =>
array (
'wpseo_title' => 'Italian',
'wpseo_desc' => 'Secrets from Sicily in a click',
'wpseo_metakey' => ''
),
23 =>
array (
'wpseo_title' => 'Chinese',
'wpseo_desc' => 'Oriental dishes were never this easy to make',
'wpseo_metakey' => ''
),
24 =>
array (
'wpseo_title' => 'Greek',
'wpseo_desc' => 'Traditional Greek flavors in easy to make recipies',
'wpseo_metakey' => ''
)
)
);
使用 array_push 向 recipe_type 数组添加新元素(数组)的语法是什么?我永远无法理解多维数组,我有点困惑。
【问题讨论】:
【参考方案1】:如果您想在关联数组中按递增顺序添加数据,您可以这样做:
$newdata = array (
'wpseo_title' => 'test',
'wpseo_desc' => 'test',
'wpseo_metakey' => 'test'
);
// for recipe
$md_array["recipe_type"][] = $newdata;
//for cuisine
$md_array["cuisine"][] = $newdata;
这将根据最后一个索引添加到食谱或菜肴中。
当你有顺序索引时,通常在数组中使用数组推送: $arr[0] , $ar[1].. 你不能直接在关联数组中使用它。但是由于您的子数组具有这种索引,您仍然可以像这样使用它
array_push($md_array["cuisine"],$newdata);
【讨论】:
这里有一个问题:在array_push之前,我在数据库中添加了一个新行,这个行需要通过id链接到数组元素。所以,如果$id = mysql_insert_id()
那么我会做$md_array["recipe_type"][$id] = $newdata
,对吗?【参考方案2】:
在多维数组中,一个条目是另一个数组,将那个值的索引指定给array_push:
array_push($md_array['recipe_type'], $newdata);
【讨论】:
如何为$md_array[$number]
提供自定义索引?我收到以下错误:array_push() expects parameter 1 to be array, null given
。 $number
变量来自foreach($numbers as $number)
,其中$numbers
是一个简单的数字数组。例如,$numbers = [1,2,3,4,5]
。啊,我是从this answer 那里得到的。【参考方案3】:
我知道这个话题很老了,但我只是在谷歌搜索后才发现它......这是另一个解决方案:
$array_merged = array_merge($array_going_first, $array_going_second);
我觉得这个很干净,效果很好!
【讨论】:
以上是关于PHP使用array_push将元素添加到多维数组的主要内容,如果未能解决你的问题,请参考以下文章