2016-11-07 10 views
2

配列の結果を数えようとしていますが、スクリプトから戻ってきます。 私は戻って私がオプションであること数えることができますどのように3 取得例に数えない場合、私はオプションA動的な結果を伴うPHP配列のカウント

Array ( 
[0] => Array ([Id] => 2020 [SupplierId] => 1809 [SupplierName] => vvv) 
[1] => Array ([Id] => 2058 [SupplierId] => 1809 [SupplierName] => bbb) 
[2] => Array ([Id] => 2063 [SupplierId] => 1809 [SupplierName] => xx) 
) 

IBである

Array ([Id] => 1779 [SupplierId] => 1809 [SupplierName] => cccccc) 

そして、2番目のオプションを取り戻すことができる2つの場合があります私は1を返し、オプションBで私は3を返すだろうか?

+0

ダニ・エヴァンルーベンスタインの答えをチェックして、+アップ票マーク:最初の配列の要素が整数または複数のアレイがある場合

あなたは見つけるためにPHPのtypeof演算子を使用することができます1つは答えとして受け入れられました。 –

答えて

2

は、このような機能を作成することができる:

function countRes($arr) { 
    return is_array(end($arr)) ? count($arr) : 1; 
} 

$arr1 = array("Id" => 1779, "SupplierId" => 1809, "SupplierName" => "cccccc"); 

$arr2 = array(array("Id" => 2020, "SupplierId" => 1809, "SupplierName" => "vvv"), 
       array("Id" => 2058, "SupplierId" => 1809, "SupplierName" => "bbb"), 
       array("Id" => 2063, "SupplierId" => 1809, "SupplierName" => "xx")); 

echo countRes($arr1); // 1 
echo countRes($arr2); // 3 

最後の要素が配列され、得られたアレイ内のアレイの数を返す場合は、チェックします。それ以外の場合は結果の配列自体にデータが含まれているため1を返します。

+0

大文字小文字の区別がついていればどうなるでしょうか?$ arr2 = array(array( "Id" => 2020、 "SupplierId" => 1809、 "SupplierName" => ( "Id" => 2058、 "SupplierId" => 1809、 "SupplierName" => "bbb")、 "Id" => 2063); 'end($ arr)'は動作しません。 –

+0

さて、OPはそのようなケースを与えませんでした。 –

+0

はい、私は知っていますが、良い答えは最大可能性をカバーする必要があると思います。あなたの答えは、OPシナリオには間違いありません。 +1 –

0

まず、コメント。 メソッドは常に同じタイプのオブジェクトを返さなければなりません。配列の配列を常に返すようにスクリプトのコードを変更できる場合は、それを行ってください。

できない場合、ハッキーソリューションが順調です。

http://php.net/manual/es/function.gettype.php

0
$array1 = array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc'); 

$array2 = array(
     array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc'), 
     array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc'), 
     array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc') 
    ); 

// sub arrays with key 
$array3 = array( 
    'first'=>array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc'), 
    'second'=>array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc'), 
    'third'=>array ('Id' => 1779, 'SupplierId' => 1809, 'SupplierName' => 'cccccc') 
    ); 


echo arrayCount($array3); 


function arrayCount($array){ 
    foreach($array as $key=>$value){ 
     if(is_array($value)){ 
      return count($array); 
     }else{ 
      return 1; 
     } 
    } 
} 
+0

2番目の配列が '' associative multi-dimenaional array''の場合はどうなりますか? '$ array [0]'は動作しません。 = '配列'(配列の 'ID' => 1779、 'SupplierId' => 1809、 'SupplierName' => 'cccccc') 'second' =>配列'ID = 1779、' SupplierId '=> 1809、' SupplierName '=>' cccccc ')、 ' third '=>配列(' Id '=> 1779、' SupplierId '=> 1809、' SupplierName '=' > 'cccccc') ); ' –

関連する問題