2011-09-10 4 views
0

c'est le tableau de distribution de $Comment obtenir une sortie json correcte dans ce cas?

Array 
(
    [ASCM72X36] => Array 
     (
      [item_code] => ASCM72X36 
      [quantity] => 5 
      [selling_price] => 6758.00 
     ) 

    [ASCM72X48] => Array 
     (
      [item_code] => ASCM72X48 
      [quantity] => 5 
      [selling_price] => 
     ) 

    [ASCM72X60] => Array 
     (
      [item_code] => ASCM72X60 
      [quantity] => 5 
      [selling_price] => 8544.00 
     ) 
) 

et c'est le tableau

vendu $
Array 
    (
     [ASCM72X36] => Array 
      (
       [item_code] => ASCM72X36 
       [quantity] => 1.0 
      ) 

     [ASCM72X60] => Array 
      (
       [item_code] => ASCM72X60 
       [quantity] => 1.0 
      ) 
) 

donc im comparer les clés et la construction nouveau tableau de responce de $ avec une nouvelle quantité et filtrer quantité 0 produits comme ci-dessous

$i=0; 
    foreach($distribution as $key => $new_distribution) 
    { 
     $newqty = $new_distribution['quantity'] - $sold[$key]['quantity']; 
     if($newqty != 0 && $new_distribution['selling_price'] != ""){ 
     $responce->data[$i]['item_code'] = $new_distribution['item_code']; 
     $responce->data[$i]['quantity'] = $newqty; 
     $responce->data[$i]['selling_price'] = $new_distribution['selling_price']; 
     } 
    $i++; 

} 

alors je dois obtenir encode JSON à mettre ainsi im le faire comme ça

echo json_encode($responce); 

im SORTIR mis comme problème

{"data":{"0":{"item_code":"ASCM72X36","quantity":4,"selling_price":"6758.00"},"2":{"item_code":"ASCM72X60","quantity":4,"selling_price":"8544.00"}}} 

est im obtenir un "0", "2" etc .. en JSON. comment éviter cela et sortir le mettre comme sans ces "0" et "2" etc ...?

{"data":{"item_code":"ASCM72X36","quantity":4,"selling_price":"6758.00"},{"item_code":"ASCM72X60","quantity":4,"selling_price":"8544.00"}} 
+0

Les 0 et 2 de ce que je peux voir sont les indices de tableau pour le tableau "données". Pourquoi voulez-vous les supprimer? –

Répondre

0

vous obtenez des indices parce que vous sauter des valeurs. c'est-à-dire que votre tableau est associatif et non numérique.

Essayez d'exécuter

$responce->data = array_values($responce->data) 

A la fin de réindexer il. Mieux encore, laissez tomber le [$i] dans vos missions et juste faire

$responce->data[] = .... 

De plus, vous l'orthographe « réponse » mal.

Si rien de tout cela ne fonctionne, jetez un oeil à JSON_NUMERIC_CHECK si vous utilisez PHP 5.3.3 ou supérieur. http://ca2.php.net/manual/en/function.json-encode.php

+0

Merci beaucoup, maintenant cela fonctionne comme j'avais besoin. –

2

semble que vous êtes en train de coder l'objet. la façon dont vous voulez vous devez coder la variable de données

echo json_encode(array("data"=>$responce->data)); 

Si votre encode un tableau qui a des chaînes comme indices, le tableau devient un objet dans la chaîne codée JSON.

Plase, essayez cette façon:

foreach($distribution as $key => $new_distribution) 
{ 
    $newqty = $new_distribution['quantity'] - $sold[$key]['quantity']; 
    if($newqty != 0 && $new_distribution['selling_price'] != ""){ 
    $arr=array(); 
    $arr['item_code'] = $new_distribution['item_code']; 
    $arr['quantity'] = $newqty; 
    $arr['selling_price'] = $new_distribution['selling_price']; 
    $responce->data[] = $arr; 
    } 

}

+0

+1. Ça y est. La prochaine fois, essayez d'écrire dans le bon cas, car vous aurez l'air cool, non? Droite! :) – Shef

+0

chose est que j'ai besoin des données {"données": {partie. si je fais ce que tu as dit, ça enlève ça. –

+0

Veuillez vérifier le nouveau code. – renato

Questions connexes