2014-10-18 3 views
0

Итак, у меня есть этот простой код для приема каждого продукта, поиска этого типа и определения категории, отображаемой на моем сайте.Предотвращение нескольких записей в массиве

public function get_categories() 
{ 
    $products = $this->get_products(); 

    $categories = array(); 

    $i = '-1'; 

    foreach($products as $product) 
    { 
     $name = ucfirst(strtolower($this->ci->inflect->pluralize($product['type']))); 

     if(!in_array($name, $categories)) 
     { 
      $i++; 

      $categories[$i] = array(
       'name' => $name, 
       'type' => strtolower($product['type']), 
      ); 
     } 
    } 

    return $categories; 
} 

Теперь она работает просто отлично, пока я не должен был пройти type вместе с name так что теперь я делаю многомерный массив.

Теперь очевидно, что name никогда не находится в массиве categories, потому что его внутри другого массива в этом.

Как определить, существует ли name в массивах внутри массива categories?

+1

Почему вы не использовать '$ name' как ключ массива вместо некоторого числа? Дал бы вам один размерный массив, и вы всегда знаете, установлено ли '$ categories [$ name]' или нет. – kero

+0

Вау, я слишком долго работал над этим ... Спасибо. – user3968645

ответ

0

Вы можете попробовать thiss изменения [$i] в

$category[$name] 

или

$i++; 

if(!in_array($name, $categories[$i])) 
     { 


      $categories[$i] = array(
       'name' => $name, 
       'type' => strtolower($product['type']), 
      ); 
     } 
0
$categories[$i] = array(
       'name' => $name, 
       'type' => strtolower($product['type']), 
      ); 

изменение

$categories[$name] = array(
       'name' => $name, 
       'type' => strtolower($product['type']), 
      ); 

и добавить

foreach($categories as $key=>$val){ 
$out[$i] = $categories[$key]; 
} 

или array_unique или аналогичный (указано ниже ссылке)

http://php.net/manual/en/ref.array.php

, но я не уверен, если я понял правильный путь

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