2014-01-27 8 views
0

Я нашел код, который действительно запутывает для меня. Может быть, это моя ошибка или я неправильно понимаю. Я видел некоторый код, как это:Элементы двойного массива в php

function my_compare($a, $b) { 
    if ($a['practice_id']['practice_url'] == $b['practice_id']['practice-url']) 


return $a['practice_location_id']['practice-url'] - $b['practice_location_id']['practise_url']; 

    else 
return $a['practice_id']['practice_url'] - $b['practice_id']['practise_url']; 
} 

Мне просто нужно знать, использование practice_url и practise_location_id и practice_url.

Являются ли они оба встроенными в имя или значение html? Пожалуйста, помогите мне понять их.

+2

Возможно, вам придется читать на массивах ... http://uk3.php.net/manual/en/language.types.array.php – mic

+0

Поскольку это код PHP, это может быть или не быть связанным к любому HTML-коду вообще. Элементы, которые вы указываете, являются индексами массива. Как указывают другие, вам необходимо проанализировать основы массивов. –

+0

Вы видите, где вызывается 'my_compare()'? найдите свой код для _string_ 'my_compare', а не только вызов функции. По-видимому, это настраиваемая функция сравнения, предназначенная для передачи в 'usort()' в качестве своего обратного вызова сортировки. Исходный массив, который передается в 'usort()' для сортировки, имеет многомерную структуру, включая ключи массива '['practice_id'], ['practice_location_id']' и подразделы '['practice_id'] ['practice_url' ] ' –

ответ

0

это «простой» многомерный массив PHP

В PHP, массивы могут содержит число, строка, объект или другой массив.

, например

$a = array('practice_id' => array('practice_url' => 2)); 
$b = array('practice_id' => array('practice_url' => 1)); 

echo $a['practice_id']['practice_url']; // display "2" 
0

Этот код имеет два массива массивов. В качестве примера:

$a = array(
    'practice_id' => array(
         'practice_url'=>'some url' 
        ), 
    'practice_location_id' => array(
         'practice-url'='some other url' 
    ) 
); 

Конечно, не видя кода массивы могут быть ничего.

$a это массив выше. $a['practice_id'] относится к массиву внутри $a с ключом 'practice_id' (поскольку в стороне это странно названный ключ, так как он подскажет мне, что запись представляет собой строку или число, а не массив). Аналогично $a['practice_id']['practice_url'] относится к значению some url.

Функция поэтому просто проверяет, равны ли определенные части массива и на основе этого возвращаются. То есть

return $a['practice_id']['practice_url'] - $b['practice_id']['practise_url']; 

Обратите внимание, что вышеупомянутая вторая странная часть. Либо practice_url является числом и имеет странно названный ключ, либо он действительно является URL-адресом, и возврат будет пытаться преобразовать оба в целое число, прежде чем возвращать их разницу.

Смежные вопросы