2

時々変化する値を持つ配列があります。通常は次のようになります。

Array ( [0] => 0 [1] => 0 [2] => 9876 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 )

1 つを除いてすべての値が 0 になります (インデックスの場所が変更されます)。複数の値が 0 より大きい場合、特定のコマンドを実行する必要があります。それ以外の場合、0 より大きい値が 1 つだけの場合は、その値を特定のコマンドに渡す必要があります。

4

7 に答える 7

3

null 以外の値のみを含む新しい配列を作成します。array_filterコールバックなしでは、評価されないすべての要素が返されFALSEます .:

$a = array(...);
$values = array_filter($a);

switch(count($values)) {
  case 0: echo 'All 0!'; break;
  case 1: specificCommandWithValue($values[0]); break;
  default: executeSpecificCommand(); break;
}

false-y 値がある場合は、( FALSENULL'0''') を保持し、厳密な値比較を行うコールバックを渡します。function($el) { return $el !== 0; }

于 2012-12-01T07:46:48.770 に答える
1

試す

$count  =0;
foreach($array as $item){

   if($item !=0){
      $count = $count+1;
    }
}
if($count > 1){

//execute a specific command
}elseif($count == 1){
  // take that value and pass it to a specific command
}else{
  //all value are zero 
}
于 2012-12-01T07:41:16.250 に答える
0

これは@NullPointerの答えですが、「その値」を保持する変数を追加しました。

$count  =0;
$nonzero = null;
foreach($array as $item){

   if($item !=0){
      $count = $count+1;
      $nonzero = $item;
    }
}
if($count > 1){

//execute a specific command
}elseif($count == 1){
  specific_command($nonzero);
}else{
  //all value are zero 
}
于 2012-12-01T07:48:43.440 に答える
0

$array = 'あなたの配列';

関数検索($配列){

 $count = 0;
 $needle = -1;                
 foreach($array as $item){
         if($item > 0){
               $count++;
               $needle = $item;
         } 
         if($count > 1)
                return -1; //error as number of non-zeroes greater than 1
 }
 if($count > 0)
      return $needle;  //returns the required single non-zero item
 return 0; // returns zero if nothing is found

}

$return = Find($配列);

于 2012-12-01T08:06:04.130 に答える
0

配列をフィルタリングし、それを取得する用途が 1 つしかない場合current():

if(count($n = array_filter($array)) == 1) {
    execute_command(current($n));
} else {
    execute_command();
}
于 2016-05-24T14:26:12.400 に答える
0

このコードを試してください。

<?PHP

$array = array(
"1" => "0",
"2" => "0",
"3" => "0",
"4" => "24",
"5" => "0");

$zero_plus_keys = 0;
$zero_plus_val  = array();

foreach($array as $key => $val)
{
    if($val > 0)
    {
        $zero_plus_keys++;
        $zero_plus_val = array($key,$val);
    }
}

if($zero_plus_keys == 1)
{
    echo "In array '".$zero_plus_val[0]."' key contains Greater than zero value. the value is = '".$zero_plus_val[1]."'";
}
elseif($zero_plus_keys > 1)
{
    echo "More keys Greater than zero(0)";
}
else
{
    echo "All keys contains zero(0)s only...";
}

?>
于 2012-12-01T08:32:02.420 に答える
0

楽しみのためだけに:P

$array = array_flip(array_flip($array));
sort($array);
if (count($array) > 2) moreThanOne();
else onlyOne($array[1]);
于 2012-12-01T08:33:47.523 に答える