簡體   English   中英

這兩個數組有什么區別?

[英]What is the difference between these two arrays?

我有一個名為“list.txt”的純文本文件,然后使用 file() 將其內容存儲在變量 $array1 中。 文本文件包含以下內容:

12088
10118
10182
12525
58162
11821
17533
10118

我還聲明了另一個名為 $array2 的數組變量,其內容類似:

$array2 = array(
  '12088',
  '10118',
  '10182',
  '12525',
  '58162',
  '11821',
  '17533',
  '10118'
 );

當我運行這個函數時,它什么也沒顯示。

$needle = "12088";
if ( in_array($needle, $array1) ) {
 echo 'Found in array1!';
}

但是,當我將它交換到 $array2 時,腳本顯示“在 array2 中找到!”。

腳本如下所示:

$array1 = file('list.txt');
$array2 = array(
'12088',
'10118',
'10182',
'12525',
'58162',
'11821',
'17533',
'10118'
 );

$needle = "12088";
 
if ( in_array($needle, $array1) ) {
 echo 'Found in array1!';
}

if ( in_array($needle, $array2) ) {
 echo 'Found in array2!';
}

這兩個數組之間的區別是什么導致 $needle 出現在一個數組中,而不是另一個?

不同之處在於您在 list.txt 中顯示了 \\r\\n 個符號。

嘗試使用$array1 = array_map('trim', $array1)之前

if ( in_array($needle, $array1) ) {
    echo 'Found in array1!';
}

您需要先將文件轉換為數組。 您可以使用str_getcsv ,如下所示:

參考: str_getcsv

$file = file_get_contents('test.txt');

// Separator set as new line "\n"
$array = str_getcsv($file, "\n");
var_dump($array);

// Output
array:8 [▼
  0 => "12088"
  1 => "10118"
  2 => "10182"
  3 => "12525"
  4 => "58162"
  5 => "11821"
  6 => "17533"
  7 => "10118"
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM