Только начинаю изучать PHP. Вопрос: Почему условие срабатывает и код выводит строки $value1 и $value2. Если $value == 0 то вывести все $value, но там же нет 0. Почему он выводит их?
$items = [
'key1' => 'value1',
'key2' => 'value2',
];
foreach($items as $key => $value) {
if((int)$value == 0) {
echo $value;
}
}
// Думаю с массивом все понятно
$items = [
'key1' => 'value1',
'key2' => 'value2',
];
foreach($items as $key => $value) { // Пробегаемся по нашему массиву
// Будет 2 иттерации, где:
// 1) $key = key1; $value = value1
// 2) $key = key2; $value = value2
if((int)$value == 0) { // Приводим строку к int и сравниваем результат с 0
echo $value; // Если верно, то выводим $value
}
}
Теперь по поводу (int)$value, $value - у вас строка, вы пытаетесь строку переделать в числовой тип. если у вас там символы, то в числа их перевести не получится, выдается 0, примеры:
var_dump((int)'text'); // 0
var_dump((int)'123'); // 123
var_dump((int)'5.15'); // 5
Однако
var_dump((int)'8text'); // 8
И документация: http://php.net/manual/ru/language.types.type-juggling.php
Конкретно нас интересует: http://php.net/manual/ru/language.types.string.php#language.types.string.conversion
Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль). Верное числовое значение - это одна или более цифр (могущих содержать десятичную точку), по желанию предваренных знаком, с последующим необязательным показателем степени. Показатель степени - это 'e' или 'E' с последующими одной или более цифрами.
и там ниже примеры.
Из-за преобразования (int). Поскольку текстовое значение value... не является числом, то приведение к целому возвращает 0
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости