2016-09-25 3 views
-1

Вот как я сделать мой массив:PHP - Как проверить, существует ли значение в массиве?

if($Love != " "){ 
    $LoveArray['Couple'] = $Love; 
} 

линии выше, в то время как цикл. Когда я сделать print_r($LoveArray); я получить следующий вывод:

Array ([Пара] => 5726) Array ([Пара] => 3421) Array ([Пара] => 3421) Array ([Пара] = > 3421) Массив ([Пара] => 2213) Массив ([Пара] => 2213) Массив ([Пара] => 5339) Массив ([Пара] => 5339) Массив ([Пара] => 3910) Массив ([Пара] => 3910) Array ( [Пара] => 3910) Array ([Пара] => 3910) Array ([Пара] => 3910 ) Array ([Пара] => 3910) Array ([Пара ] => 3910) Массив ( [Пара] => 3910) Массив ([Пара] => 3421) Массив ([Пара] => 5726 ) Массив ([Пара] => 2213) Массив ([Пара] => 2213) Массив ( [Пара] => 2213) Array ([Пара] => 2213) Array ([Пара] => 2213 ) Array ([Пара] => 2213) Array ([Пара] => 2213) Array ( [Пара ] => 2213) Массив ([Пара] => 2213) Массив ([Пара] => 2213 ) Массив ([Пара] => 2213) Массив ([Пара] => 2213) Массив ( [Пара] => 6327) Массив ([Пара] => 3910) Массив ([Пара] => 6327) Массив ([Пара] => 3910 ) Массив ([Пара] => 3910) Массив ( [Пара] => 3910) Массив ([Пара] => 3910) Array ([Пара] => 3910 ) Array ([Пара] => 3910) Array ([Пара] => 3910) Array ( [Пара] => 3910) Array ([Пара ] => 5339) Массив ([Пара] => 5339 ) Массив ([Пара] => 6327) Массив ([Пара] => 6327) Массив ()[Пара] => 6327) Array ([Пара] => 6327) Array ([Пара] => 6327 )

Массив выше, может быть представлено в виде:

<?php 

    $array = [ 
     ["Couple" => 5726], 

     ["Couple" => 3421], 
     ["Couple" => 3421], 
     ["Couple" => 3421], 

     ["Couple" => 2213], 
     ["Couple" => 2213], 

     ["Couple" => 5339], 
     ["Couple" => 5339], 

     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 

     ["Couple" => 3910], 
     ["Couple" => 3421], 
     ["Couple" => 5726], 

     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 
     ["Couple" => 2213], 

     ["Couple" => 6327], 
     ["Couple" => 6327], 

     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 
     ["Couple" => 3910], 

     ["Couple" => 5339], 
     ["Couple" => 5339], 

     ["Couple" => 6327], 
     ["Couple" => 6327], 
     ["Couple" => 6327], 
     ["Couple" => 6327], 
     ["Couple" => 6327], 
    ]; 

Как вам могут видеть, что есть повторяющиеся значения, один из которых - 5726.

Как я могу проверить, есть ли 5726 уже в $LoveEvent['Couple'], и если он не может вставить другой в этот массив?

С уважением.

+1

Вы можете хранить все идентификаторы в массиве, без подмассивов и использовать 'in_array' –

+0

Уже проверено' in_array() 'и кажется, не работает для меня. –

+1

Потому что у вас есть подмассивы здесь. –

ответ

0

Если вам нужно проверить, что значение существует в массиве, предпочтительнее использовать in_array().

Но на данный момент вам необходимо проверить его на многомерный массив, чтобы вы могли использовать in_array() рекурсивным образом, чтобы было полезно найти значение в массиве или нет.

<?php 
function check_array_value($to_find, $array_values, $strict = false) { 
    foreach ($array_values as $item) { 
     if (($strict ? $item === $to_find : $item == $to_find) || (is_array($item) && check_array_value($to_find, $item, $strict))) { 
      return true; 
     } 
    } 
    return false; 
} 
?> 

Использование этой функции может быть выполнено следующим образом.

$array_values = array(array("Name", "Apple"), array("Orange", "IOS")); 
echo check_array_value("IOS", $array_values) ? 'found' : 'not found'; 

Если IOS присутствует в массиве он вернется, как found или иначе она будет возвращать not found.

0

Может быть что-то вроде этого:

foreach($LoveArray as $value){ 
    if($value['Couple'] != $Love){ 
     $LoveArray['Couple'] = $Love; 
    } 
} 
+0

Не работает вообще. –

0
if ($Love != " ") { 
    if (!in_array($Love, array_column($LoveArray, 'Couple'))) { 
     $LoveArray['Couple'] = $Love; 
     $finalArray[] = $LoveArray; //adding the new element should also be here 
    } 
} 

Требуется (PHP 5> = 5.5.0, PHP 7) http://php.net/manual/en/function.array-column.php

$arr = ['orange', 'apple', 'banana', 'orange', 'banana']; 
$finalArray = []; 

foreach ($arr as $item) { 
    if (!in_array($item, array_column($finalArray, 'Couple'))) { 
     $finalArray[] = ['Couple' => $item]; 
    } 
} 

print_r($finalArray); 

ВЫВОД:

Array 
(
    [0] => Array 
     (
      [Couple] => orange 
     ) 

    [1] => Array 
     (
      [Couple] => apple 
     ) 

    [2] => Array 
     (
      [Couple] => banana 
     ) 

) 
+0

Это не работает. Он снова вставляет повторяющиеся результаты. –

+0

Может вставить немного больше вашего фрагмента, должно быть что-то вроде $ someOtherArray [] = $ LoveArray; и тот, который вы печатаете, - $ someOtherArray, я прав? –

0

Ниже приведено простое решение: foreach. Вы можете попробовать. И, кстати, вы можете Quick-Test it here:

<?php 
    $array  = [ 
      ["Couple" => 5726], 
      ["Couple" => 3421], 
      ["Couple" => 3421], 
      ["Couple" => 3421], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 5339], 
      ["Couple" => 5339], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3421], 
      ["Couple" => 5726], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 2213], 
      ["Couple" => 6327], 
      ["Couple" => 6327], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 3910], 
      ["Couple" => 5339], 
      ["Couple" => 5339], 
      ["Couple" => 6327], 
      ["Couple" => 6327], 
      ["Couple" => 6327], 
      ["Couple" => 6327], 
      ["Couple" => 6327], 
     ]; 

     $arrFinal = []; 

     foreach($array as $iKey=>$arrCouple){ 
      if(!in_array($arrCouple, $arrFinal)){ 
       $arrFinal[] = $arrCouple; 
      }else{ 
       // DO WHATEVER YOU WANT TO DO 
       // IN THE CASE THE DATA DOES ALREADY EXIST... 
       // THIS WOULD BE UP TO YOU... 
      } 
     } 

     var_dump($arrFinal); 

В var_dump($arrFinal); Урожайность:

 array (size=6) 
      0 => 
      array (size=1) 
       'Couple' => int 5726 
      1 => 
      array (size=1) 
       'Couple' => int 3421 
      2 => 
      array (size=1) 
       'Couple' => int 2213 
      3 => 
      array (size=1) 
       'Couple' => int 5339 
      4 => 
      array (size=1) 
       'Couple' => int 3910 
      5 => 
      array (size=1) 
       'Couple' => int 6327 
Смежные вопросы