2017-06-16 15 views
-1

ここで回答を探していますが、必要なものが見つかりません。PHP:オブジェクトに配列の値が含まれていないか確認してください。

私はcodeigniter 3を使用していますが、私の問題はPHP構文/ロジックです。

状況:

私は正しい値を含む3つの配列を持っています。これらの配列を他の配列と比較する必要があります。私はin_arrayと試みたが、それは動作しません

if ($Cash contains one of the value $daxArt){ 
    <---- here is my problem - add to new array. 
} 

$t = $daxArt -> result(); 

    foreach ($CSS -> result() as $object){  

     if ($object -> PAYMETHOD == "CASH"){ 

      array_push ($Cash , $object);  

     } 
     if ($object -> PAYMETHOD == "EC" ){ 

      array_push ($EC , $object);  

     } 
     if ($object -> PAYMETHOD == "POSCOM"){  

      array_push ($POSCOM , $object); 
     } 
    } 

今、私はこのような何かをしなければなりません。

ありがとうございました!

+0

入力内容は? '$ daxArt'、' $ CSS'、 '$ Cash'などには何が入っていますか? – Halcyon

+0

'in_array()'または 'array_keys()'関数を意味しますか? – Jer

+0

'私はin_arrayで試しましたが、うまくいきません。'何を試しましたか?あなたはこれをデバッグするのに必要なコードの半分しか投稿していません – Machavity

答えて

0

$ daxArt、$ CSS、$ Cashなどはすべて、次のようなオブジェクトを含んでいると仮定します。

array_intersect()これは、2つの配列を比較し、両方に存在する値のみの単一の配列を返します。たとえば、あなたが次のことを行うことができますので、

<?php 

$t = $daxArt->result(); 

foreach($css->result() as $object){ 
    if ($object->PAYMETHOD == "CASH"){ 
     array_push ($Cash , $object);  
    } 

    if ($object->PAYMETHOD == "EC"){ 
     array_push ($EC , $object);  
    } 

    if ($object->PAYMETHOD == "POSCOM"){  
     array_push ($POSCOM , $object); 
    } 
} 

//Get values for each of the $Cash, $EC, $POSCOM that are in $daxArt->result(); 
$cashDaxArt = array_intersect($Cash, $t); 
$ecDaxArt = array_intersect($EC, $t); 
$poscomDaxArt = array_intersect($POSCOM, $t); 

//Check if cash contained values returned by $daxArt->result(); 
if(!empty($cashDaxArt)){ 
    //$Cash contained a value in $daxArt->result()! 
} 

?> 

これは、配列を移動することによって、shortendすることができますは、2つのアウトを壊すことは読みやすくなりますけれどもif文が、私に交差しています。

こちらがお役に立てば幸いです。

+0

お返事ありがとうございます。 $ Cash、$ EC、$ POSCOMのデータ構造は同じです。// array(182){[0] =>オブジェクト(stdClass)#49(5){["ARTICLENO"] => string(3 $ tはこれのように見え、数字だけを含んでいます://"100" ["DESCRIPTION"] => string(28) "xxxxx" ["REVENUE"] => string(5) "10501"オブジェクト(stdClass)#22(1){["articleNumero"] =>文字列(7) "2010102"} [1] =>オブジェクト(stdClass)#23(1) {["articleNumero"] => string(4) "9999"}など.....これで、$ Cash、$ EC、$ POSCOMのarticleNumeroとARTICLENOを比較したいと思います。等しい場合は、新しい配列に記事を追加します。 – MLAZ

0
$CASH = $EC = $POSCOM = array(); 
foreach ($CSS -> result() as $object){  
     if (in_array($object->PAYMETHOD, array("CASH","EC","POSCOM")) 
     { 
       ${$object->PAYMETHOD}[] = $object; 
     } 
} 
関連する問題