У меня многомерный массив.
$shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") );
Первый элемент в каждом массиве – номер приложения, а остальные в каждом массиве – номера публикаций . Я получаю первый элемент (номер приложения) и последний элемент каждого массива (последний номер публикации), как это
$index = count(array_keys($shop)); for($i=0;$i<$index;$i++){ $appln_nr = $shop[$i][0]; echo $appln_nr; $publn_nr_index = count(array_keys($shop[$i]))-1; $publn_nr = $shop[$i][$publn_nr_index]; echo $publn_nr; }
Теперь у меня есть номер приложения и номер публикации для каждого внутреннего массива.
Я хочу создать ассоциативный массив из номеров приложений и номеров публикаций.
где ключ должен быть номером приложения, а его значение – номер публикации.
благодаря
РЕДАКТИРОВАТЬ
Что я получаю из магазина $ shop
Array ( [0] => Array ( [0] => appn1 [1] => pub1 [2] => pub2 [3] => pub3 ) [1] => Array ( [0] => appn2 [1] => pub1 ) [2] => Array ( [0] => appn3 [1] => pub1 [2] => pub2 ) )
И это то, что мне нужно в моем ассоциативном массиве
Array( "appn1" => "pub3" "appn2" => "pub1" "appn3" => "pub2" )
Наконец, я понял, что вы хотели, после вашего редактирования XD:
$shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") ); $shopNew = array(); foreach($shop as $value){ $shopNew[$value[0]] = end($value); } // now if you want you can replace $shop and unset $shopNew $shop = $shopNew; unset($shopNew); print_r($shop);
с$shop = array( array("appn1", "pub1" ,"pub2" , "pub3"), array("appn2", "pub1"), array("appn3", "pub1" ,"pub2") ); $shopNew = array(); foreach($shop as $value){ $shopNew[$value[0]] = end($value); } // now if you want you can replace $shop and unset $shopNew $shop = $shopNew; unset($shopNew); print_r($shop);
вывод следующий:
Array ( [appn1] => pub3 [appn2] => pub1 [appn3] => pub2 )
Можешь попробовать
$shop = array( array("appn1","pub1","pub2","pub3"), array("appn2","pub1"), array("appn3","pub1","pub2") ); $final = array(); array_map(function ($var) use(&$final) {$final[reset($var)] = end($var);}, $shop); var_dump($final);
Вывод
array 'appn1' => string 'pub3' (length=4) 'appn2' => string 'pub1' (length=4) 'appn3' => string 'pub2' (length=4)
Вы можете легко преобразовать свой массив в новый формат, используя первый элемент в качестве ключа (см. reset
) и последний элемент (см. end
) в качестве значения:
foreach($shop as $fl) { $v[reset($fl)] = end($fl); }
Результат в $v
тогда.
Если вы хотите преобразовать массив, вам нужно также удалить каждый элемент:
foreach($shop as $v => $fl) { $shop[reset($fl)] = end($fl); unset($shop[$v]); }
сforeach($shop as $v => $fl) { $shop[reset($fl)] = end($fl); unset($shop[$v]); }
Результат получается в $shop
. Unset заботится об удалении из массива.
Вывод в обоих случаях:
array(3) { 'appn1' => string(4) "pub3" 'appn2' => string(4) "pub1" 'appn3' => string(4) "pub2" }
попробуй это:
foreach($shop as $k => $v) { $new_arr[$v[0]] = end($v); }
Это должно дать вам этот результат,
$new_arr = array( "appn1" => "pub3", "appn2" => "pub1", "appn3" => "pub2"- );