PHP: лучший способ получить первое значение в массиве, если он присутствует - PullRequest
0 голосов
/ 18 ноября 2009

Вот мой код:

$quizId = '';
foreach ($module['QuizListing'] as $quizListing)    {
    if ($quizListing['id']) {
        $quizId = $quizListing['id'];
        break;
    }
}

Есть ли лучший способ сделать это?

Ответы [ 5 ]

3 голосов
/ 18 ноября 2009

То, что вы делаете, разумно, если:

  • появляется несколько списков викторин; и
  • не у всех есть ID.

Я предполагаю из вашего вопроса, что одно из того и другого не соответствует действительности. Если вы хотите первый список викторины, сделайте следующее:

$listing = reset($module['quizListing']);
$quizId = $listing['id'];

Функция reset() возвращает первый элемент в массиве (или false, если его нет).

Предполагается, что у каждого списка викторины есть идентификатор. Если это не так, то вы не можете стать намного лучше, чем то, что вы делаете.

1 голос
/ 18 ноября 2009

Используя array_key_exists, вы можете проверить, существует ли ключ для вашего массива. Если он существует, то назначьте его как хотите.

if (array_key_exists('id', $quizListing)) {
  $quizId = $quizListing['id'];   
}
1 голос
/ 18 ноября 2009
$quiz = array_shift($module['QuizListing']);

if (null != $quiz) {
    echo "let's go";
}
1 голос
/ 18 ноября 2009

чтобы ответить, если этот массив исходит из базы данных, вам, вероятно, лучше отфильтровать ваш запрос, чтобы не включать эти строки на первое место

что-то вроде

SELECT * from Quiz WHERE id <> 0

это даст вам массив, пригодный для использования без какой-либо другой обработки.

1 голос
/ 18 ноября 2009

Незначительные изменения:

$quizId = '';
foreach ($module['QuizListing'] as $quizListing)    {
    if (isset($quizListing['id'])) {
        $quizId = $quizListing['id'];
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...