[英]How to create new arrays from existing multidimensional array in PHP
我有以下多維數組(這只是一部分),想動態創建一組一維數組並添加值。
我有的:
0 =>
0 => Image
1 => DE
2 => Hamburg-S02-I01
3 => 54
4 => Button
1 =>
0 => Image
1 => GB
2 => London-S01-I01
3 => 51
4 => Button
2 =>
0 => Image
1 => GB
2 => London-S01-I04
3 => 60
4 => Button
3 =>
0 => Image
1 => DE
2 => Berlin-S02-I01
3 => 57
4 => Button
4 =>
0 => Image
1 => DE
2 => Hamburg-S02-I01
3 => 52
4 => Button
我需要的:
$Hamburg = array('Hamburg-S02-I01', 'Hamburg-S02-I01');
$London= array('London-S01-I01', 'London-S01-I04');
$Berlin= array('Berlin-S02-I01');
我感謝您的幫助! 謝謝!
這樣的事情可能會起作用:
$cities = array();
foreach($images as $image) {
$parts = explode('-',$image[2]);
$city = $parts[0];
if(!isset($cities[$city])) $cities[$city] = array();
$cities[$city][] = $image[2];
}
試試這個... $myarray
是上面包含您的示例的數組。
$cities = array();
foreach($myarray as $key => $val){
unset($tmp);
$tmp = explode("-",$val[2]);
if(!is_array($cities[$tmp[0]])){
$cities[$tmp[0]] = array();
}
array_push($cities[$tmp[0]], $val[2]);
}
我是...
遍歷原始數組。
使用變量$tmp
分割帶有城市名稱的元素。
僅使用城市名稱,我正在測試是否有一個具有該名稱的新數組元素。
如果沒有,請在$cities
創建該數組。
無論哪種方式,都將城市字符串推入城市數組。
$new_array = array();
foreach ($array as $key => $val) {
$new_array[explode('-',$val[2])[0]][] = $val;
}
該代碼遍歷您的數組-我隨意命名為$array
array-並將其中的每個sub_array推入另一個數組的sub_arrays內,該鍵將是原始sub_array的第三項中第一個連字符之前的鍵。 我不知道這是否是您的追求,但至少它會激發您的靈感。
新數組的內容: (3) [Hamburg] => (2) [0] => (5) [0] => Image [1] => DE [2] => Hamburg-S02-I01 [3] => 54 [4] => Button [1] => (5) [0] => Image [1] => DE [2] => Hamburg-S02-I01 [3] => 52 [4] => Button [London] => (2) [0] => (5) [0] => Image [1] => GB [2] => London-S01-I01 [3] => 51 [4] => Button [1] => (5) [0] => Image [1] => GB [2] => London-S01-I04 [3] => 60 [4] => Button [Berlin] => (1) [0] => (5) [0] => Image [1] => DE [2] => Berlin-S02-I01 [3] => 57 [4] => Button
$new_array = array();
foreach ($array as $key => $val) {
$new_array[explode('-',$val[2])[0]][] = $val[2];
}
第二個版本僅推送第三個條目,因為這似乎是您所追求的。
輸出: (3) [Hamburg] => (2) [0] => Hamburg-S02-I01 [1] => Hamburg-S02-I01 [London] => (2) [0] => London-S01-I01 [1] => London-S01-I04 [Berlin] => (1) [0] => Berlin-S02-I01
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.