【发布时间】:2015-01-06 11:56:03
【问题描述】:
有这样的数组
Array
(
[0] => Array
(
[CategoriesName_1] => Happy Birthday
[CategoriesName_2] => Flowers
[CategoriesName_3] => Fruit baskets
[CategoriesDescription_1] =>
[CategoriesDescription_2] =>
[CategoriesDescription_3] => Fruit baskets descr
[CategoriesUrl_1] => happy-birthday
[CategoriesUrl_2] => flowers
[CategoriesUrl_3] => fruit-baskets
)
)
想把它转成这样的数组(需要得到这个结果)
Array
(
[0] => Array
(
[CategoriesName] => Happy Birthday
[CategoriesDescription] =>
[CategoriesUrl] => happy-birthday
)
[1] => Array
(
[CategoriesName] => Flowers
[CategoriesDescription] =>
[CategoriesUrl] => flowers
)
[2] => Array
(
[CategoriesName] => Fruit baskets
[CategoriesDescription] => Fruit baskets descr
[CategoriesUrl] => fruit-baskets
)
)
初始(一维数组)有键CategoriesName_1、CategoriesUrl_1、CategoriesDescription_1。对于每个数字(_1、_2、_3),希望将名称、url 和描述放在一起并创建单独的子数组。
一开始创建了 3 个独立的数组
foreach ( $array_with_breadcrumbs[0] as $key_brcr => $val_brcr ) {
if( 'CategoriesUrl_' == substr($key_brcr,0,14) ){
$array_url_brcr[] = array( 'CategoriesUrl' => $val_brcr );
}
if( 'CategoriesName_' == substr($key_brcr,0,15) ){
$array_name_brcr[] = array( 'CategoriesName' => $val_brcr );
}
if( 'CategoriesDescription_' == substr($key_brcr,0,22) ){
$array_description_brcr[] = array( 'CategoriesDescription' => $val_brcr );
}
}//foreach ( $array_with_breadcrumbs[0] as $key_brcr => $val_brcr ) {
然后像这样遍历所有三个数组
foreach( $array_url_brcr as $i_url => $val_url ){
foreach( $array_name_brcr as $i_name => $val_name ){
foreach( $array_description_brcr as $i_description => $val_description ){
if( $i_url == $i_name ) {
$combined_arr_brcr[] = array(
'CategoriesUrl' => $val_url['CategoriesUrl'],
'CategoriesName' => $val_name['CategoriesName'],
'CategoriesDescription' => $val_description['CategoriesDescription']
);
}
}
}
}
我得到了九个(3 个数组 * 3 个循环)子数组,但结果不是预期的。根据结果,我必须编写额外的代码来获取(保留)第一个、第五个和第九个子数组。
代码看起来很长。有没有更好(更短、更简单)的方法来获得结果?
【问题讨论】:
-
如何创建第一个数组?
-
mysql 2 arr 中的第一个数组,然后是
array_replace_recursive -
那么,您的数据库结构看起来像:CategoriesName_1、CategoriesName_2、CategoriesName_3 等?你使用
SELECT CategoriesName_1, CategoriesName_2, CategoriesName_3, ... FROM table获取这些数据? -
不,在数据库中是
CategoriesName、CategoriesUrl等。我根据 url 获得的初始数组。路漫漫其修远兮(这里写不合理;代码太长,与题目无关)
标签: php arrays multidimensional-array