2016-09-25 145 views
-1

这里是如何使我的数组:PHP - 如何检查数组中是否存在值?

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

以上线在while循环。当我这样做print_r($LoveArray);我收到以下输出:

阵列([夫妇] => 5726)阵列([夫妇] => 3421)阵列([夫妇] => 3421)阵列([夫妇] = ([Couple] => 5339)Array([Couple] => 2213)Array([Couple] => 2213)Array ([Couple] => 3910)阵列([Couple] => 3910)阵列([Couple] => 3910)Array([Couple] => 3910 ) ([Couple] => 3910)Array([Couple] => 3410)Array([Couple] => 5710 )Array([Couple] => 2213)Array([Couple] => 2213)阵列(([Couple] => 2213)Array([Couple] => 2213)Array([Couple] => 2213 )Array([Couple] => 2213)Array数组([Couple] => 2213)Array([Couple] => 2213)Array([Couple] => 2213 )Array([Couple] => 2213)Array( [Couple] =>阵列([Couple] => 3910)阵列([Couple] => 6327)阵列([Couple] => 3910 )阵列([Couple] => 3910)阵列([Couple] => 3910)阵列([Couple] => 3910)阵列([Couple] => 3910)Array([Couple] => 3910)阵列Array([Couple] => 5339)Array([Couple] => 5339 )Array([Couple] => 6327)Array([Couple] => 6327)Array( [夫妇] => 6327)阵列([夫妇] => 6327)阵列([夫妇] => 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

你可以存储在阵列中的所有ID,不会导致子阵列和使用'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); 

OUTPUT:

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