2012-01-31 132 views
0

我已经导入了一个CSV来填充多维数组。 $arrCSV搜索到多维数组

<?php  
    $foundOneMatchingRow = FALSE; 
    foreach ($arrCSV as $row) { 
    if (strpos($row['5'], $val) !== FALSE && strlen($row['5']) > 4) { 
     $foundOneMatchingRow = TRUE; 
     echo $row['6']; 
    } 
    } 
?> 

以上代码输出$val = $_GET['menu'];的值,这是通过购买URL完成的。

如果可能,请根据$row['6'];中的文字进行搜索。

将在页面上进行搜索,将搜索传递到URL。

这看起来像http://example.com/search.php?val=dogs

因此,代码会寻找任何关于狗$row [6]

我希望我已经明确。任何意见都不会受到欢迎。我现在正在测试一切。

谢谢

+1

开始通过查看PHP的array_filter()函数 - http://www.php.net/manual/en/function.array-filter.php – 2012-01-31 12:50:38

+0

一种减问一个问题。你知道这里有PHP新手级别的人.. – Arthor 2012-01-31 12:53:42

+0

@Mark Ba​​ker 3 - 谢谢,我会研究它。 – Arthor 2012-01-31 12:54:22

回答

1

if (strpos($row['6'], $val) !== FALSE)将评估到,如果$row['6']含有 “狗”(如果$val的值是 “狗”)。也就是说,如果$row['6']中的字符串是“bulldog”或“whateverdogwha​​tever”,则将评估为true

顺便说一句,为什么你需要这个条件:strlen($row['5']) > 4? (如果你在$row['6']上搜索,我想这应该至少为strlen($row['6']) > 4)。

别的东西:你不是在混淆字符串和整数吗?也许if (strpos($row['6'], $val) !== FALSE)应该是if (strpos($row[6], $val) !== FALSE)

编辑

我建议来定义常量为您的CSV列,以提高可读性。

什么,例如:

define('CSV_ID', 5); 
define('CSV_TEXT', 6); 

//... 
foreach ($arrCSV as $row) { 
    if (strpos($row[CSV_TEXT], $val) !== FALSE && strlen($row[CSV_ID]) > 4) { 
    //... 
    echo $row[CSV_TEXT]; 
    } 
} 
+0

谢谢你的见解。我正在研究他们。我现在可以回答一个部分:)'strlen($ row ['5'])> 4' - 因为前4个字符是ID Key,CSV填充了200条记录,但只有24条记录被完全填充。 – Arthor 2012-01-31 12:58:30

+0

CSV文件的第5列和第6列包含什么内容? – 2012-01-31 13:03:34

+0

这是否正确 - 常量是简单值的标识符(名称)。顾名思义,在脚本执行过程中,该值无法更改。换句话说,一旦定义了一个常量,它就根本不能改变? – Arthor 2012-01-31 13:04:59