Поиск в многомерном массиве - PullRequest
0 голосов
/ 31 января 2012

Я импортировал 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 Ответ

1 голос
/ 31 января 2012

if (strpos($row['6'], $val) !== FALSE) оценивается как true , если $row['6'] содержит "dog" (если значение $val равно "dog"). Таким образом, будет также оцениваться значение true , если строка в $row['6'] имеет значение «бульдог» или «что угодно, что угодно».

Кстати, зачем вам это условие: strlen($row['5']) > 4? (который, я думаю, должен быть не менее strlen($row['6']) > 4, если вы ищете на $row['6']).

Что-то еще: не путаете ли вы строки и целые числа? Может быть if (strpos($row['6'], $val) !== FALSE) должно быть if (strpos($row[6], $val) !== FALSE)?

EDIT

Я бы предложил определить константы для ваших столбцов 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];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...