как получить запись «0» в объекте

У меня есть следующий объект:

stdClass Object ( [0] => stdClass Object ( [img_id] => 56 [img_name] => 5c9eeb51930ebe222ab26895dab7c348.png ) ) 

Он сбрасывается в переменную с именем $ image_names. Я пытаюсь получить запись для [0].

Я пытался:

$ image_names-> 0, но я получаю ошибку: синтаксическая ошибка, неожиданный T_LNUMBER

Я даже пробовал $ image_names [0]. Я понимаю, что это не должно работать, но я думал, что попробую. Это не возвращает ошибку. Но он также не возвращает данные.

В этой структуре объектов, как мне получить объект, связанный с ключом [0]?

Первый 0 исчезает?

Как сообщить phpmyadmin, MySQL, чтобы разрешить первое 0 перед номером телефона, например? (Не заполнение нуля)

  • Когда я пытаюсь поставить перед ним ноль (в phpmyadmin), он автоматически удаляет его.
  • Когда я отправляю свой номер формы с 0, указанным перед номером, он не добавляет его.

Есть обходной путь или что-то еще?

Входное значение 0 = пустое?

У меня есть страница, где вы регистрируете свою собаку, и я хочу, чтобы все эти поля были необходимы:

$required_fields = array('name', 'age', 'gender', 'breed', 'size'); foreach ($_POST as $key => $value) { if (empty($value) && in_array($key, $required_fields) === true) { $errors[] = 'All fields marked with * are required.'; break 1; } } 

Проблема в том, что если кто-то входит 0 (что я им инструктирую делать, если собака щенок), представление, похоже, читает это поле как пустое (давая мне эту ошибку). У меня есть проверки дальше, удаляя любые целые числа и т. Д., Но лучшее решение и самая простая форма для пользователей, которые я по-прежнему думаю, – это возможность ввода 0 в качестве значения. Во всяком случае, есть ли способ заставить мой PHP-код считать значение не равным нулю?

Из руководства :

Следующие вещи считаются пустыми:

 "" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) $var; (a variable declared, but without a value) 

Исправить, что вы можете подумать, было бы так:

 if ((empty($value) && $value != 0) && in_array($key, $required_fields) === true) { 

PHP рассматривает их как пустые:

 null 0 "" "0" false 

Таким образом, у вас есть два варианта. Приложите что-нибудь к нему, например значение a0 или, используйте isset .

Проверить $value === null

 if ($value === null && in_array($key, $required_fields) === true) { 

Как удалить 0 из строки

Я смотрю на функцию trim но, к сожалению, не удаляет «0», как я могу добавить к ней это? Должен ли я использовать str_replace ?

EDIT: Строка, которую я хотел изменить, – это номер сообщения, который выглядит так: 00023460

Функция ltrim("00023460", "0") делает именно то, что мне нужно 🙂 Очевидно, я бы не хотел использовать обычную trim потому что она также удалит окончание 0, но поскольку я забыл добавить, что ответ, который я получил, 🙂

 $ php -r 'echo trim("0string0", "0") . "\n";' string 

Для нулевого заполненного номера в примере:

 $ php -r 'echo ltrim("00023460", "0") . "\n";' 23460 

Функция trim только удаляет символы из начала и конца строки, поэтому вам, вероятно, потребуется использовать str_replace.

Если вам нужно удалить только 0 из начала и конца строки, вы можете использовать следующее:

 $str = '0000hello00'; $clean_string = trim($str, '0'); // 'hello' 

Это должно было быть здесь с самого начала.

EDIT: Строка, которую я хотел изменить, – это номер сообщения, который выглядит так: 00023460

Лучшее решение, вероятно, это для любого целого числа ниже, чем PHP_INT_MAX

$ number = (int) '00023460';

Взгляните на str_replace

 print str_replace( '0', '', "This0string0needs0spaces"); 

Конечно, это так (см. Второй параметр $charlist ):

 trim('000foo0bar000', '0') // 'foo0bar' 

0 в корпусе выключателя?

Извините, может быть, немой вопрос, но у меня проблема HUGE с одним случаем, когда у меня есть переменная int со значением 0 (ноль).

switch ($starost_vozila){ case (0): switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 485; break; case ("motor2"): $eko_taksa = 243; break; case ("motor3"): $eko_taksa = 121; break; case ("motor4"): $eko_taksa = 194; break; } break; case ($starost_vozila < 6): switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 485; break; case ("motor2"): $eko_taksa = 243; break; case ("motor3"): $eko_taksa = 121; break; case ("motor4"): $eko_taksa = 194; break; } break; case ($starost_vozila > 5 && $starost_vozila < 11): switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 667; break; case ("motor2"): $eko_taksa = 273; break; case ("motor3"): $eko_taksa = 136; break; case ("motor4"): $eko_taksa = 218; break; } break; 

Switch продолжить больше, но вот моя проблема, в этом фрагменте кода.

Если я не помещаю «case (0):» и использую это:

 case ($starost_vozila >= 0 && $starost_vozila < 6): 

Тогда случай, который будет следующим, каким-то образом станет активным, и он распечатает «$ eko_taksa = 667;».

Это все проблема, когда «$ starost_vozila = 0», но когда это число меньше 6, чем этот случай выше работает.

Каждый var здесь int. Все работает нормально, за исключением случаев, когда «$ starost_vozila = 0», и когда я использую «case» ($ starost_vozila> = 0 && $ starost_vozila <6): ".

Я понятия не имею, что происходит … Oo

Извините, если это глупый вопрос. 🙁

в случаях с коммутаторами не принимаются утверждения, которые необходимо оценить. Они берут простые строки, булевы или числа, которые сравниваются с

так скажите, что у вас есть

 $x = 0 switch( $x ) { case( $x < 10 ): ... break; } 

вы ожидаете, что это произойдет, но это не так, и вот почему

( $x < 10 ) оценивается как true так что на самом деле у вас есть:

 $x = 0 switch( $x ) { case true: //!!! ... break; } 

0 != true поэтому случай не выполняется

вам нужно использовать

 if() { } else if() { } else { } 

Вы используете switch неправильно.

Ваш код понимается так:

 if ($starost_vozila == 0) { switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 485; break; case ("motor2"): $eko_taksa = 243; break; case ("motor3"): $eko_taksa = 121; break; case ("motor4"): $eko_taksa = 194; break; } } else if ($starost_vozila == ($starost_vozila < 6)) { //not what you want!!! switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 485; break; case ("motor2"): $eko_taksa = 243; break; case ("motor3"): $eko_taksa = 121; break; case ("motor4"): $eko_taksa = 194; break; } } else if ($starost_vozila == ($starost_vozila > 5 && $starost_vozila < 11)) { //not what you want!!! switch ($podaci['tip_motora']){ case ("motor1"): $eko_taksa = 667; break; case ("motor2"): $eko_taksa = 273; break; case ("motor3"): $eko_taksa = 136; break; case ("motor4"): $eko_taksa = 218; break; } } 

Например, ($starost_vozila < 6) станет либо TRUE либо FALSE . $starost_vozila == ($starost_vozila < 6) сравнивает $starost_vozila с TRUE или FALSE , что вы не хотите делать.

Я предлагаю использовать if / elseif вместо switch в этом случае. Например:

 if ($starost_vozila == 0) { ... } else if ($starost_vozila < 6) { ... } else if ($starost_vozila > 5 && $starost_vozila < 11) { ... } 

использование Switch аналогично == в «if statement», а не === (не проверяет тип). Только пустая строка или NULL приведет к Integer 0 – кроме этого, они считаются строкой 0.

Номер с 0 на передней панели?

У меня есть функция

$x = 012; echo $x / 3; 

Почему результат 3,33333?

Но если я использую:

 $x = '012'; 

Тогда правильно. Вопрос в том, как это можно объяснить?

Числа с префиксом 0 обрабатываются как восьмеричные числа:

 $x = 012;//$x is 10 

Подробнее здесь

Причина, что $x = '012'; работает, потому что PHP преобразует это в целое число, не рассматривая его как восьмеричное число.

Числа с нулем – это восьмеричные числа. Итак, 012 – восьмеричное число.

Из руководства по PHP :

 $a = 0123; // octal number (equivalent to 83 decimal)