2016-10-27 5 views
0

次のjsonがある場合、shipmentWayプロパティが各親要素に対して同じ値を持つかどうかを確認するにはどうすればよいですか?JSONでプロパティの値が同じであることを確認します

{ 
    "3":[ 
     { 
     "idOrdenCompraProducto":3, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ], 
    "4":[ 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":3000 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"A\u00e9reo", 
     "qty":1500 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":1000 
     } 
    ], 
    "5":[ 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     }, 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ] 
} 

私は本当にこの前に感謝しています。

+0

としてreturn false;を置き換える数字はidOrdenCompraProductoの値と一致していることを仮定して、最初の不一致を持っていた配列を返すしたい場合

実際のテキスト –

+0

のスクリーンショットを再入力すると、[json_decode](http://php.net/manual/en/function.json-decode.php)を参照して、それをオブジェクト –

+0

@ Memor-Xあなたが正しいです。これは私の最初の質問です。私はjsonの文字列で私の質問を更新しました。 – user3720752

答えて

0
<?php 
$json = '{ 
    "3":[ 
     { 
     "idOrdenCompraProducto":3, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ], 
    "4":[ 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":3000 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"A\u00e9reo", 
     "qty":1500 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":1000 
     } 
    ], 
    "5":[ 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     }, 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ] 
}'; 
$array = json_decode($json, true); 
$shipmentWay = array(); 
foreach($array as $key => $parent) 
{ 
    foreach($parent as $index => $child) 
    $shipmentWay[$key][$child['shipmentWay']] = true; 
} 
// var_dump($shipmentWay); 
    $result = array(); 
    foreach($shipmentWay as $key => $value) 
    { 
     $result[$key] = (count($value) > 1)?false:true; 
    } 
    var_dump($result); 

デモ出力は

アレイ(3){[3] => BOOL(真)[4] => BOOL(偽)であるhttps://eval.in/667231

を参照する[5] =>
ブール値(真)}

+0

@ Memor-Xもっと早く編集します –

+0

未定義のインデックス:shipmentWay – user3720752

+0

@ user3720752私はそれを編集します –

0

OK私は、this example

を作成
function jsonAllSame($jsonStr) 
{ 
    $object = json_decode($jsonStr); 

    foreach($object as $objArr) 
    { 
     $index = 0; 
     $compare = ""; 
     foreach($objArr as $obj) 
     { 
      if($compare == "") 
      { 
       $compare = $obj->shipmentWay; 
      } 
      else 
      { 
       if($obj->shipmentWay != $compare) 
       { 
        return false; 
       } 
      } 
     } 
    } 

    return true; 
} 

$json = '{ 
    "3":[ 
     { 
     "idOrdenCompraProducto":3, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ], 
    "4":[ 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":3000 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"A\u00e9reo", 
     "qty":1500 
     }, 
     { 
     "idOrdenCompraProducto":4, 
     "shipmentWay":"Confirmation Pending", 
     "qty":1000 
     } 
    ], 
    "5":[ 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     }, 
     { 
     "idOrdenCompraProducto":5, 
     "shipmentWay":"Confirmation Pending", 
     "qty":25000 
     } 
    ] 
}'; 
$compare = "Confirmation Pending"; 

var_dump(jSonAllSame($json)); 

あなたが見たい主なものは、機能jSonAllSameです。それは引数としてjson文字列を取ります。関数内でデコードすると、2つのforeachループを使用して作成されたオブジェクトの各配列がループします。

初めてオブジェクトの配列(2番目のforeachループ)に移動すると、比較することはありません。したがって、$compareを最初の値に設定します。

$compareが空ではないので、2回目の繰り返しで比較することができます。一致しない値が1つ見つかった場合は、そこの関数を停止してfalseを返します。オブジェクトの各配列を調べて不一致が見つからない場合はtrueを返します。我々は代わりに、我々はあなたがJSONのスクリーンショットを投稿していなかった場合は容易になるだろうreturn $obj->idOrdenCompraProducto;

+0

@ memor-xありがとうございます – user3720752

関連する問題