2015-04-02 18 views
0
if ($totalModuletest>0){ 
    if (in_array(1, $modValArr, true)){ 
     echo "1.13 found with strict check\n"; 
     } 
} 
else{ 
     $aVal = 0; 
} 

通过使用print_r($ modValArr);在PHP中使用Array中的条件获取密钥

Array ([0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 1[5]) 

我想知道在这个数组中存在大于零的任何值。如果存在,我需要它的钥匙。我需要的结果是4.

这在PHP中如何实现?

+0

1.你的数组结构是怎样的?所以你想过滤大于0的所有值,然后从所有这些值中获取键值? – Rizier123 2015-04-02 11:37:26

+1

@Sona但是在你的数组中没有值大于'0' – 2015-04-02 11:40:44

+0

在这个例子中''modValArr'完全等于'$ moduleArr' - 你是否有这样复制它的原因? – M1ke 2015-04-02 11:41:45

回答

4

这应该为你工作:

(在这里我只是过滤低于0的所有值了与array_filter(),然后就拿到钥匙与array_keys()

<?php 

    $arr = [0, 0, 0, 0, 1, ""]; 
    $result = array_keys(array_filter($arr, function($v){ 
     return $v > 0; 
    })); 

    print_r($result); 

?> 

输出:

Array ([0] => 4) 
+0

这真的很棒... – 2015-04-02 11:59:37

+0

它真的很棒。这正是我需要的。谢谢。 – Sona 2015-04-02 12:13:52

+0

@Sona不客气! – Rizier123 2015-04-02 12:14:14

0

试试这个..

$yourarray=array(0,0,2,0,4,1); 
//array_filter used to remove 0,null,empty array.so you will get non empty or grater then 0 value of array 
$newvalue=array_filter($yourarray); 

foreach($newvalue as $key=>$value) 
{ 
echo "value:".$value; 
echo "Key:".$key; 
} 
+1

这是一个字符串,而不是一个数组! – Rizier123 2015-04-02 11:44:47

+0

我已经发布了示例数组 – 2015-04-02 11:46:25

+1

现在情况更糟了,因为这会给您带来致命的错误! – Rizier123 2015-04-02 11:47:10

0

要找到任何值大于零:

function find_keys_greater_than(Array $input_array, $val_to_check = 0){ 
    $keys_greater_than = [];  
    foreach ($input_array as $key => $value){ 
     if ($value > $val_to_check){ 
      $keys_greater_than[] = $key; 
     } 
    } 
    return $keys_greater_than; 
} 

例如

$input_array=[0, 0, 4, 0, 1, 0]; 
$keys_greater_than_zero = find_keys_greater_than($input_array, 0); 
// output: [2, 4] 

您可以更改$val_to_check的值以更改您的阈值。