2014-09-11 3 views
0
function getParent(&$categories, $category){ 
    foreach ($categories as &$cat){ 
     if($category->parentId==$cat[0]->id){ 
      $cat["subCategories"][$category->id] = array($category,"subCategories"=>array()); 
      return $cat; 
     } 
     else if(isset($cat["subCategories"])){ 
      $this->getParent($cat["subCategories"], $category); 
     } 
    } 
} 

Категории $ (его перечеркнутый список, содержащий один идентификатор личности и чужой идентификатор) - это список, а $ category - один из элементов категорий. Я не знаю, что означает эта строка $category->parentId==$cat[0]->id Почему [0]? И почему постоянно 0? Объясните ли вы весь код?Не могли бы вы объяснить php-код

+1

Что такое '$ categories'? Вероятно, это массив массивов. –

+1

Отправьте пример вывода из 'var_dump ($ categories)', но скопированный из источника страницы браузера, а не как отображаемый браузером, так что разрывы строк остаются нетронутыми. –

+0

выглядит просто, нужно больше контекста, чтобы действительно знать, что он делает. –

ответ

0

Если проверка проверяет, совпадает ли текущий идентификатор категории с родительским идентификатором, а затем возвращает массив в противном случае, он снова ищет новый родитель.

$category->parentId == $cat[0]->id 

[0], является постоянной, поскольку это относится к первому элементу ему массив, поэтому вместо того, зная ключ массива это короткая рука.

Массив в php может иметь ключ $ cat ['current_id'], и если бы это был первый ключ, это также был бы $ cat [0], дающий тот же результат.

$array = Array('current_id' => 55, 'title' => 'first one'); 

echo $array['current_id']; 

echo $array[0]; 

if ($array['current_id'] == $array[0]){ echo 'Same'; } else { echo 'Not Same'; } 
if ($array['current_id'] == $array[1]){ echo 'Same'; } else { echo 'Not Same'; } 

Все массивы начинаются с 0 для ключей 0,1,2,3 ...

http://php.net/manual/en/language.types.array.php#example-99

http://oreilly.com/catalog/progphp/chapter/ch05.html

+0

, спасибо за очень объясненный ответ. "текущая категория идентификатора совпадает с идентификатором родителя" - Вы имеете в виду, если текущий элемент содержит один и тот же идентификатор? Потому что я вижу в базе данных, что на верхнем уровне (у которого нет партера) родительский идентификатор равен 0 – Andrewboy

+0

Да, они будут иметь одинаковое значение в них. Родительский идентификатор 0 обычно используется для верхней категории в дереве или корневом, поэтому у него не будет родителя. Как ключ и значение, как правило, не одно и то же, но может быть. – tristanbailey

+0

Я также вижу в базе данных первый столбец id int, в этом случае почему $ cat [0] -> id используется insted всего $ cat [0]? – Andrewboy

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