какую сортировку php использовать для многомерного массива и по значению 'цена'? - PullRequest
1 голос
/ 20 ноября 2010

Ниже приведен пример типа результатов для вызова API. Я хочу отсортировать эти результаты по цене и сохранить структуру массива. Я пробовал многочисленные примеры из руководства, а также код, который я нашел, но, похоже, не могу найти подходящую комбинацию, чтобы она работала. Буду очень признателен за любую помощь.

array(7) { 
  ["errors"]=> array(0) { } 
  ["warnings"]=> array(1) { 
    [0]=> array(2) { 
      ["code"]=> string(26) "api_class_update_available" 
      ["msg"]=> string(58) "The Api class is now available in version 1.6" 
    } 
  } 
  ["data"]=> array(4) { 
    [0]=> array(3) { 
      ["url"]=> string(7) "http://" 
      ["keyword"]=> string(7) "keyword1"  
      ["price"]=> string(5) "23.99" 
    } 
    [1]=> array(3) { 
      ["url"]=> string(7) "http://" 
      ["keyword"]=> string(7) "keyword2"  
      ["price"]=> string(5) "19.99" 
    }  
    [2]=> array(3) { 
      ["url"]=> string(7) "http://" 
      ["keyword"]=> string(7) "keyword3"  
      ["price"]=> string(5) "29.99" 
    } 
    [3]=> array(3) { 
      ["url"]=> string(7) "http://" 
      ["keyword"]=> string(7) "keyword4"  
      ["price"]=> string(5) "9.99" 
    } 
  }
  ["countryCode"] => string(2) "US" 
  ["page"] => int(1) 
  ["limit"]=> int(4) 
} 

1 Ответ

3 голосов
/ 20 ноября 2010

Вы можете использовать usort() для сортировки свойства $array['data']

function priceCompare($a, $b) { return $a['price'] - $b['price']; }
usort($results['data'], 'priceCompare');

Или в PHP 5.3 вы можете использовать замыкание, поэтому вам не нужно определятьфункция:

usort($results['data'], function($a, $b) { return $a['price'] - $b['price']; });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...