2016-09-25 143 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