Предупреждение PHP: in_array () неверный тип данных для второго аргумента в - PullRequest
0 голосов
/ 22 января 2012

Я недавно получил эту ошибку в моем журнале ошибок:

   PHP Warning:  in_array() [<a href='function.in-array'>function.in-array</a>]: Wrong datatype for second argument in... on line 423

и относится к следующему коду:

    <?php foreach($services_a as $key=>$service) { ?>
    <div class="oneservice">
    <input type="checkbox" name="services[]" value="<?php echo $key; ?>" id="service<?php echo $key; ?>"<?php if( in_array($key, $services) ) { echo ' checked="checked"'; } ?> />
    <label for="service<?php echo $key; ?>"><?php echo $service; ?></label>
    </div>

Любые мнения очень приветствуются, Спасибо

Ответы [ 3 ]

3 голосов
/ 22 января 2012

in_array() проверяет значение, а не ключ.

Используйте array_key_exists(), если хотите проверить ключ:

<input type="checkbox" name="services[]" value="<?php echo $key; ?>" id="service<?php echo $key; ?>"<?php if( array_key_exists($key, $services) ) { echo ' checked="checked"'; } ?> />

Когда вы открываете форму в первый раз, ваш $_POST['services'] будет пустым. Чтобы устранить ошибку, инициализируйте пустой массив, если из сообщения ничего не приходит:

$services = is_array($_POST['services') && count($_POST['services']) > 0 ? $_POST['services'] : array();
0 голосов
/ 22 января 2012

Возможно, потому что вы назвали массив, который вы итерируете для $services_a, но массив, который вы используете для второго аргумента в in_array(), называется обычным $services.Возможно, проблема в том, что второй аргумент имеет значение NULL, которое выдает предупреждение.

0 голосов
/ 22 января 2012

Вы должны проверить "массив" Это массив?

<?php if(is_array($services)): ?>
 <?php if( in_array($key, $services) ) { echo ' checked="checked"'; } ?>
<? endif; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...