Простое однострочное решение, просто сравните его с массивом, заполненным первой записью.
if(arr.join('') === Array(arr.length).fill(arr[0]).join(''))
Как представляется, это связано с ошибкой # 61655 , зафиксированной в 7.2.0:
в поиске свойств объекта по имени всегда в строке, но в массиве числовых строка (например, «22200») преобразуется в числовую, но не в строку. когда преобразование внутреннего HashTable не изменилось, поэтому после преобразования поиск ключа завершится неудачно.
blockquote>Уточнено:
$a["2000"]
всегда интерпретируется как$a[2000]
, но(array)
не удалось передать строку объекта ключи к номерам. Таким образом, массив содержал строковые числовые индексы, но синтаксис массива «автоматическое кастинг» не позволял им быть доступными.
добавить TRUE
в json_decode()
<?php
$a = json_decode('{"7":"value1","8":"value2","9":"value3","13":"value4"}',TRUE);
var_export($a);
var_dump(isset($a[7]), isset($a['7']));
Добавить TRUE в json_decode () возможно, но он будет обрабатывать все.
Вам нужно изменить доступ к переменным.
, если ваш json выглядит это:
$return = '{"status":"ok","message":"","code":"200","data":{"1234":{"sid":1,"name":"foo"},"4321":{"sid":2,"name":"bar"}}}';
on:
$json_data = json_decode($return, true);
$data = $json_data['data'];
вы можете закодировать данные $ и получить доступ к значениям в виде массива: $ data [0] ['name']. ..
on:
$json_data = json_decode($return);
$data = (array) $json_data->data;
вы можете закодировать $ data и получить доступ к значениям как объекты: $ data [0] -> name ...
true
, когда вам понадобится литье типов. Проверьте, как мой ответ, как две разные версии, работают отлично. – Alive to Die 22 January 2018 в 12:10true
). Причина вопроса заключалась в том, что я столкнулся сjson_decode
использованием без второго параметра и не мог объяснить магию с помощью индексов массива. – Gino Pane 22 January 2018 в 12:15