2016-07-02 10 views
-1

PHPの要素をチェックした後、私のJSON配列を編集したいと思います。まず、JSONの要素をチェックする必要があります。存在しない場合は、新しい要素を作成します。それが既に作成されている場合、私はそれを新しい要素として追加したいと思います。例えば;PHP JSON配列を編集する

{ 
    "fruits": [ 
      { 
     "Vitamin": "Vitamin C", 
     "Name": "Apple", 
     } 
     { 
     "Vitamin": "Vitamin B", 
     "Name": "Banana", 
     } 
     { 
     "Vitamin": "Vitamin D", 
     "Name": "Watermelon", 
     } 
     { 
     "Vitamin": "Vitamin C", 
     "Name": "Orange", 
     } 
     { 
     "Vitamin": "Vitamin C", 
     "Name": "Mandarin", 
     } 
    ] 
} 

これは自分の入力です。私はすべてのビタミンのオブジェクトをチェックしたい、それがすでに作成されている場合、私はこのようにしたいです。

{ 
    "fruits": [ 
      { 
     "Vitamin": "Vitamin C", 
     "Name": ["Apple", "Orange", "Mandarin"] 
     } 
     { 
     "Vitamin": "Vitamin B", 
     "Name": "Banana", 
     } 
     { 
     "Vitamin": "Vitamin D", 
     "Name": "Watermelon", 
     } 
    ] 
} 

array_key_existsを使用しますか?私はこれについて何をすべきかわからない。私は入力を入力するたびにJSONを作成しますか?あなたがそうするために重要な「ビタミン」のグループに

をしようとしている、私はそのようなことをするだろう

答えて

0

私は理解しているように、:

/** 
* Group an array based on a "key column" and a "value column". 
* @param array $json  The array to transform. 
* @param string $keyCol The column name from wich we will group 
* @param string $valCol The value that we need to group 
* @return array   The array grouped on the keycol. 
*/ 
function groupJsonOnKey(array $json, $keyCol, $valCol) { 
    $groupedArray = []; 
    foreach ($json as $val) { 
     $key = $val[$keyCol]; 
     if (!isset($groupedArray[$key])) 
      $groupedArray = (object) [$keyCol => $key, $valCol => []]; 
     $groupedArray[$key]->$valCol[] = $val[$valCol]; 
    } 
    return $groupedArray; 
} 

//We load the data and parse it to an array 
$jsonData = json_decode("DECODE YOUR JSON TO AN ARRAY", true); 

$groupedArray = groupJsonOnKey($jsonData['fruits'], 'Vitamin', 'Name'); 

//Now we recreate the expected output 
$newData = new stdClass(); 
$newData->fruits = array_values($groupedArray); 
+0

は簡単な説明をありがとうございました。私は今ポイントを得ました。しかし、私はajaxリクエストから入力を受け取ります。だからどこにアイテムを追加すればいいですか?私は配列に新しいjsonをプッシュする必要がありますね。私は正しい? –

+0

あなたのプロセスのフローチャートを少し詳しく説明できれば、私はさらにあなたのお手伝いをすることができます。私はフロントエンド(Javascript)からアイテムを送信し、それをデータベースまたはファイルに保存するためにバックエンドに送信していると思いますか? –