2013-09-26 90 views
0

我有一個數組,我們把它叫做$ mainArray,它看起來像這樣: -檢查子陣列的值,使用密鑰,以新陣新的價值 - PHP

Array 
(
    [1] => Array 
    (
    ) 

    [5] => Array 
    (
     [0] => 10 
     [1] => 15 
     [2] => 20 
     [3] => 25 
    ) 

    [80] => Array 
    (
     [0] => 20 
     [1] => 40 
     [2] => 50 
     [3] => 60 
    ) 

    [777] => Array 
    (
     [0] => 100 
     [1] => 200 
     [2] => 300 
     [3] => 400 
    ) 

    [666] => Array 
    (
     [0] => 1234 
     [1] => 5678 
     [2] => 20 
     [3] => 9865 
    ) 

    [555] => Array 
    (
     [0] => 111 
     [1] => 222 
     [2] => 333 
     [3] => 444 
    ) 

) 

我想要做的就是創建2個新陣列: -

1)其中值等於$ mainArray的鍵名稱,但只有那些子數組(如果有的話)在其中某處包含值「20」的數組。例如,我的新數組(稱爲$ arrayOne)將爲[0] => 5,[1] => 80,[2] => 666.

2)類似於上面,數組或者,如果有,則不包括「20」作爲值。所以(稱爲$ arrayTwo)將是[0] => 1,[1] => 777,[2] => 555。

我試過每個循環的負載,甚至有一點RecursiveIteratorIterator(無論是!),但似乎無法以我需要的方式引用鍵和值。任何幫助將非常感激!

回答

0

這會不會做?:

<?php 

    foreach($mainArray as $mKey => &$mVal) 
    { 
     if(in_array(20, $mVal)) 
     { 
      $arrayOne[] = $mKey; 
     } 
     else 
     { 
      $arrayTwo[] = $mKey; 
     } 
    } 
+0

似乎....非常感謝! –

+0

沒問題,請務必在之後對它們進行任何操作之前檢查數組是否已設置/清空。 – Jason

0

我相信你可以創建,如果數組包含20,因爲它的價值或者沒有這將檢查功能。我們稱這個函數爲has20。然後

你們兩個新的陣列將array_filter($mainArray, 'has20')array_filter($mainArray, function ($x) {return !has20($x);})

0

你可以這樣說:

$newArray = array(); 
foreach($mainArray as $key => $subArray) { 
    if (in_array(20, $subArray)) { 
    $newArray[] = $key; 
    } 
}