#php #arrays
#php #массивы
Вопрос:
У меня есть многомерный PHP-массив, подобный следующему:
Array(
[id] => lO2riJGekyHmjvFbASTa
[word] => abc
[product_id] => 1
[variation] => Array(
[attribute_1] => attribute-1
[attribute_2] => attribute-2
[attribute_3] => attribute-3
)
)
Что мне нравится, так это переместить первые два элемента ‘id’ и ‘word’ в качестве первых двух дочерних элементов элемента ‘variation’, чтобы массив выглядел так:
Array(
[product_id] => 1
[variation] => Array(
[id] => lO2riJGekyHmjvFbASTa
[word] => abc
[attribute_1] => attribute-1
[attribute_2] => attribute-2
[attribute_3] => attribute-3
)
)
Как я могу этого добиться?
Большое спасибо!
Комментарии:
1. если я понимаю, вы хотите создать другой массив, подобный sencond, который вы монтировали !??
Ответ №1:
Просто, просто назначьте их variation
, а затем unset
оригиналы:
$array['variation']['id'] = $array['id'];
$array['variation']['word'] = $array['word'];
unset($array['id'], $array['word']);
Ответ №2:
Я также видел короткий ответ, данный AbraCadaver выше, и он уже должен вам помочь. И если вы не хотите менять положение массива, пожалуйста, выполните следующий код один раз и попробуйте.
<?php
$arr = array("id" => "lO2riJGekyHmjvFbASTa",
"word" => "abc",
"product_id" => "1",
'variation' => array('attribute_1' => "attribute-1",'attribute_2' => "attribute-2",'attribute_3' => "attribute-3")
);
foreach($arr as $id => $val){
if($id == "word"){
array_unshift($arr['variation'], $arr['word']);
}
}
foreach($arr as $id => $val){
if($id == "id"){
array_unshift($arr['variation'], $arr['id']);
}
}
function replaceArrayKey($array, $oldKey, $newKey){
//If the old key doesn't exist, we can't replace it...
if(!isset($array[$oldKey])){
return $array;
}
//Get a list of all keys in the array.
$arrayKeys = array_keys($array);
//Replace the key in our $arrayKeys array.
$oldKeyIndex = array_search($oldKey, $arrayKeys);
$arrayKeys[$oldKeyIndex] = $newKey;
//Combine them back into one array.
$newArray = array_combine($arrayKeys, $array);
return $newArray;
}
$variationNew = replaceArrayKey($arr['variation'], 0, 'id');
$variationNew = replaceArrayKey($variationNew, 1, 'word');
unset($arr['id']);
unset($arr['word']);
$arr['variation'] = $variationNew;
echo "<pre>"; print_r($arr);
?>