我需要在数组php中重命名该键: 我需要将密钥名称更改为这个,menu_link_content子数组:
Array
(
[0] => Array
(
[menu_link_id] => 1
[menu_id] => 2
[parent_id] => 0
[page_id] => 1
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:16
[page_path] =>
[menu_link_content] => Array
(
[0] => Array
(
[menu_link_content_id] => 1
[menu_link_id] => 1
[lang_id] => 1
[menu_link_text] => home
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
[1] => Array
(
[menu_link_content_id] => 3
[menu_link_id] => 1
[lang_id] => 3
[menu_link_text] => home inglese
[menu_link_title] =>
[lang_flag] => inghilterra.jpg
[lang_name] => Inglese
)
)
)
[1] => Array
(
[menu_link_id] => 2
[menu_id] => 2
[parent_id] => 0
[page_id] => 2
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:19
[page_path] =>
[menu_link_content] => Array
(
[0] => Array
(
[menu_link_content_id] => 2
[menu_link_id] => 2
[lang_id] => 1
[menu_link_text] => prova
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
)
)
)
我想得到这样的结果:
Array
(
[0] => Array
(
[menu_link_id] => 1
[menu_id] => 2
[parent_id] => 0
[page_id] => 1
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:16
[page_path] =>
[menu_link_content] => Array
(
[this_lang_id in this case is 1] => Array
(
[menu_link_content_id] => 1
[menu_link_id] => 1
[lang_id] => 1
[menu_link_text] => home
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
[this_lang_id in this case is 3] => Array
(
[menu_link_content_id] => 3
[menu_link_id] => 1
[lang_id] => 3
[menu_link_text] => home inglese
[menu_link_title] =>
[lang_flag] => inghilterra.jpg
[lang_name] => Inglese
)
)
)
[1] => Array
(
[menu_link_id] => 2
[menu_id] => 2
[parent_id] => 0
[page_id] => 2
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:19
[page_path] =>
[menu_link_content] => Array
(
[this_lang_id in this case is 1] => Array
(
[menu_link_content_id] => 2
[menu_link_id] => 2
[lang_id] => 1
[menu_link_text] => prova
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
)
)
)
然后我不想要这个[menu_link_content] [0]但是我想要这个[menu_link_content] [1],因为一个是[menu_link_content]数组中包含的lang_id。
我该怎么办?
的 MOD 的 这是我的功能:
$this->query('
SELECT c.*, l.lang_flag, l.lang_name
FROM tb_menu_link_content AS c
INNER JOIN tb_lang AS l
ON l.lang_id = c.lang_id
WHERE c.menu_link_id = "'.$menu_link['menu_link_id'].'"
');
$menu_link_content = $this->fetch_assoc_all();
foreach($menu_link_content as $key => $value){
$lang_id = $value['lang_id'];
$new_array[$lang_id] = $value;
}
$menu_link_content = array('menu_link_content'=>$new_array);
$array[] = array_merge($menu_link, $menu_link_content);
运行良好但复制了第二个子数组上的语言[menu_link_content] 第二个[menu_link_content]
中不存在lang_id 3Array
(
[0] => Array
(
[menu_link_id] => 1
[menu_id] => 2
[parent_id] => 0
[page_id] => 1
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:16
[page_path] =>
[menu_link_content] => Array
(
[1] => Array
(
[menu_link_content_id] => 1
[menu_link_id] => 1
[lang_id] => 1
[menu_link_text] => home
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
[3] => Array
(
[menu_link_content_id] => 3
[menu_link_id] => 1
[lang_id] => 3
[menu_link_text] => home inglese
[menu_link_title] =>
[lang_flag] => inghilterra.jpg
[lang_name] => Inglese
)
)
)
[1] => Array
(
[menu_link_id] => 2
[menu_id] => 2
[parent_id] => 0
[page_id] => 2
[menu_link_type] => page
[menu_link_order] =>
[menu_link_url] =>
[menu_link_class] =>
[menu_link_date] => 2013-10-08 14:23:19
[page_path] =>
[menu_link_content] => Array
(
[1] => Array
(
[menu_link_content_id] => 2
[menu_link_id] => 2
[lang_id] => 1
[menu_link_text] => prova
[menu_link_title] =>
[lang_flag] => italia.jpg
[lang_name] => Italiano
)
[3] => Array
(
[menu_link_content_id] => 3
[menu_link_id] => 1
[lang_id] => 3
[menu_link_text] => home inglese
[menu_link_title] =>
[lang_flag] => inghilterra.jpg
[lang_name] => Inglese
)
)
)
)
我的问题是: 我有这个数组$菜单,我有一个数组$ languages
我必须创建一个为找到的每种语言创建的函数:
<input type="text" name="menu_link_text[$language['lang_id']]" value="$menu['menu_link_text'][$language['lang_id']">
答案 0 :(得分:0)
让我们将原始数组变量称为$my_array
。
foreach($my_array as $idx => $value) {
// load the 'menu_link_content'
$menu_link_content = $value['menu_link_content'];
// prepare a new placeholder
$new_menu_link_content = [];
// iterate through $menu_link_content
foreach($menu_link_content as $item) {
// remap items
$id = $item['menu_link_content_id' ];
$new_menu_link_content[ $id ] = $item;
}
// replacing 'menu_link_content'
$my_array[$idx]['menu_link_content'] = $new_menu_link_content;
}
答案 1 :(得分:0)
您无法更改已创建数组中给定索引的键名称。我不会给你解决方案的代码,但你必须通过迭代现有的代码来创建一个新的数组,并根据你认为合适的方式命名新数组中的键,同时从你正在迭代的现有数组中绘制值。 要不让您的数据从 0 键开始,您只需确保手动输入 1 作为第一个密钥并继续运行。
只要“new”数组中的键不与现有数组中的键名冲突,就可以重用该数组并插入新值并取消设置旧值。但这可能会变得混乱而且难以调试。
但要将密钥* foo_id *的名称更改为 id ,您可以执行类似
的操作foreach ( $array as $key => $value )
{
$array[$key] ['id'] = $array[$key] ['foo_id'];
unset($array[$key]['foo_id']);
}
但正如我所说......它会变得相当混乱。特别是对于多维数组;)