簡體   English   中英

如何在PHP中從現有的多維數組創建新數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM