Bu değeri bağlı olarak JSON nesnesi almak için nasıl

2 Cevap php

Değerine bağlı olarak bir JSON nesne dizi dışında bir JSON nesnesi almak için bir yolu var mı?

Ben ne var:

$users = [{"id":1, "name":"Some Name"},
          {"id":2, "name":"Another Name"},
          {"id":3, "name":"Third Name"}];

Ve ne istediğinizi kimliği bağlı kullanıcıyı çekin etmektir. Yani user=2 gönderir bir AJAX çağrısı olabilir. Ne istediğiniz JSON diziden 2 bir kimliği ile kullanıcı çekmek.

Bunu yapmak ya da değil en iyi yolu olup olmadığını merak ediyorum. O kolay kılacak eğer, json dizi başka bir şekilde kurmak için tam erişime sahip.

2 Cevap

Eğer aynı dizide bu operasyon / search birçok kez yapıyorsanız size bir hashtable / dizinin anahtar olarak kullanarak id düşünebilirsiniz.

$json = '[{"id":1, "name":"Some Name"},
          {"id":4, "name":"Another Name"},
          {"id":9, "name":"Third Name"}]';

$users = array();
foreach(json_decode($json, true) as $u) {
  $users[$u['id']] = $u;
}

echo $users[9]['name'];

İsterseniz istemci üzerinde kullanıcı getirilirken kolaylığı:

jsonData = 
{ 
  "selectedId": 2,
  "users":
  {
    "Id1": {"id":1, "name":"Some Name"},
    "Id2": {"id":2, "name":"Another Name"},
    "Id3": {"id":3, "name":"Third Name"},
    "Id100": {"id":100, "name":"Some Name"}
  }
}

ve istemci üzerinde ...

var selectedId = data.selectedId;
var user = data.users["Id" + selectedId];

Hatta burada "Kimliği" öneki gerek olmayabilir. Dizi-temelli yaklaşım ilgili kaygılarım sen kimlikleri sıralı olduğunu garanti asla olabilir. Nesne özelliklerini kullanan bu yaklaşım, sınırlama bu tür bağlı değildir.