Если у вас достаточно небольшое количество «людей», тогда предыдущие ответы будут работать на вас.Учитывая, что ваш пример имеет идентификаторы в диапазоне 8000, я подозреваю, что просмотр каждого отдельного идентификатора может быть не идеальным.Итак, вот еще один метод, который будет проверять гораздо меньше людей, прежде чем найти правильного (при условии, что люди в порядке идентификации):
//start with JSON stored as a string in $jsonStr variable
// pull sorted array from JSON
$sortedArray = json_decode($jsonStr, true);
$target = 8097; //this can be changed to any other ID you need to find
$targetPerson = findContentByIndex($sortedArray, $target, 0, count($sortedArray));
if ($targetPerson == -1) //no match was found
echo "No Match Found";
function findContentByIndex($sortedArray, $target, $low, $high) {
//this is basically a binary search
if ($high < low) return -1; //match not found
$mid = $low + (($high-$low) / 2)
if ($sortedArray[$mid]['id'] > $target)
//search the first half of the remaining objects
return findContentByIndex($sortedArray, $target, $low, $mid - 1);
else if ($sortedArray[$mid]['id'] < $target)
//search the second half of the remaining objects
return findContentByIndex($sortedArray, $target, $mid + 1, $high);
else
//match found! return it!
return $sortedArray[$mid];
}