2012-03-01 68 views
-1
Array 
(
    [0] => Array 
     (
      [id] => 10 
      [on] => 2 
     ) 

    [1] => Array 
     (
      [id] => 15 
      [on] => 2 
     ) 

    [2] => Array 
     (
      [id] => 20 
      [on] => 2 
     ) 

) 

我想以下:如何檢查陣列上的子值的所有元素等於一個值

  1. 如果[on]=>2上的所有子陣列

    ,返回$結果= 2

  2. 如果子陣列中的一個具有[on]=>1,返回$結果= 1

任何人都可以幫我嗎?謝謝!

嘗試過這一點,但對於第一次需求量的

foreach($arr as $key=>$val){ 

    if(in_array(2, $val)){ 

     $result = 2; 

    }else if(in_array(1, $val)){ 

     $result = 1; 

    } 

} 
+1

(HTTP:// mattgemmell。 com/2008/12/08/what-you-you-tried /) – mindandmedia 2012-03-01 13:41:40

+0

是唯一可用的VA '''on']'總是會變成'1'還是'2'? – 2012-03-01 13:46:31

回答

2

如果1和2都沒有遇到什麼不正確的

function get_value($array){ 
    foreach($array as $item){ 
     if ($item['on'] == 1){ return 1; } 
     if ($item['on'] != 2){ return FALSE; } 
    } 
    return 2; 
} 
0
foreach($arrayelements as $arrayelement) { 
    if($arrayelement['on'] == 2) { 
     $result = 2; 
     return $result; 
    } 

    if($arrayelement['on'] == 1) { 
     $result = 1; 
     return $result; 
    } 
} 
+0

這是數組的第一次迭代返回... – 2012-03-01 13:44:39

+0

我的不好,困在我的頭上我 – ncremins 2012-03-01 13:45:37

0

有幾種方法解決你的問題:這是我的! :)
使用以下函數,如果兩個都不滿意,您將得到一個不需要的值數組。
您可能會更精確地告訴我們您希望在這種情況下獲得什麼。

function my_check($array, $desired_value_for_all, $known_unwanted_value) 
{ 
    $not_desired = array_diff(
     array_unique(
      array_map(
       create_function(
        '$nested', 
        'return $nested["on"];' 
       ), 
       $array 
      ) 
     ), 
     array($desired_value_for_all) 
    ); 

    if (empty($not_desired)) 
     return $desired_value_for_all; 

    elseif (in_array($known_unwanted_value, $not_desired)) 
     return $known_unwanted_value; 

    else 
     return $not_desired; 
} 

實例1:

$array = array 
(
    array 
    (
     'id' => 10, 
     'on' => 2 
    ), 

    array 
    (
     'id' => 15, 
     'on' => 2 
    ), 

    array 
    (
     'id' => 20, 
     'on' => 2 
    ) 
); 
var_dump(my_check($array, 2, 1)); 

Output: 
int 2 

例2:

$array = array 
(
    array 
    (
     'id' => 10, 
     'on' => 2 
    ), 

    array 
    (
     'id' => 15, 
     'on' => 1 
    ), 

    array 
    (
     'id' => 20, 
     'on' => 2 
    ) 
); 
var_dump(my_check($array, 2, 1)); 

Output: 
int 1 

例子3:?你嘗試過什麼]

$array = array 
(
    array 
    (
     'id' => 10, 
     'on' => 4 
    ), 

    array 
    (
     'id' => 15, 
     'on' => 2 
    ), 

    array 
    (
     'id' => 20, 
     'on' => 3 
    ) 
); 
var_dump(my_check($array, 2, 1)); 

Output: 
array 
    0 => int 4 
    2 => int 3 
相關問題