Помощник
|
Туплю с массивом, помогите |
Den1xxx
|
Сообщение
#1
|
||
|
|
||
|
|||
alexdrob |
8.10.2012, 11:28;
Ответить: alexdrob
Сообщение
#2
|
|
А может лучше скажите зачем такое нужно? В пхп нет жёских типов, какая разница число это или строка?
|
|
|
alexdrob |
8.10.2012, 11:32;
Ответить: alexdrob
Сообщение
#3
|
|
http://php.net/manual/ru/language.types.array.php
Дополнительно с ключом key будут сделаны следующие преобразования:
Строки, содержащие целое число будут преобразованы к типу integer. Например, ключ со значением "8" будет в действительности сохранен со значением 8. С другой стороны, значение "08" не будет преобразовано, так как оно не является корректным десятичным целым. Числа с плавающей точкой (тип float) также будут преобразованы к типу integer, т.е. дробная часть будет отброшена. Например, ключ со значением 8.7 будет в действительности сохранен со значением 8. Тип bool также преобразовываются к типу integer. Например, ключ со значением true будет сохранен со значением 1 и ключ со значением false будет сохранен со значением 0. Тип null будет преобразован к пустой строке. Например, ключ со значением null будет в действительности сохранен со значением "". Массивы (тип array) и объекты (тип object) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Недопустимый тип смещения (Illegal offset type). |
|
|
Den1xxx
|
Сообщение
#4
|
|
|
|
|
Den1xxx
|
Сообщение
#5
|
|
Блин, почитал спасибо. Долбаный PHP который не спрашивает что делает, нельзя написать "1"=>"Щито?", это обязательно получится 1=>"Щито?"
То есть это будет уже не ключ а индекс! И никакие strval, (string) и т.п. не помогают. |
|
|
r3ntg3n |
8.10.2012, 12:24;
Ответить: r3ntg3n
Сообщение
#6
|
|
Не надо катить бочку на php. Это стандартное поведение массива. Понятие массив предопределяет, что у вас в качестве идентификатора элемента используется его индекс.
Чтобы порядок следования элементов в массиве не менялся. А вы думаете, что если стока заменится числом, то у вас изменится порядок следование элементов? |
|
|
Den1xxx
|
Сообщение
#7
|
|
если стока заменится числом, то у вас изменится порядок следование элементов Разумеется. $x=array("1"=>"2"); - предполагается строка "1" соответствует "2" А на самом деле при создании массива "1" - это уже не строка, а целое число, индекс массива. $x[1] = "2", а мной предполагалось логичное поведение $x[0] = "2". То есть : $x["1"]=$x[0]="2";//это если бы в действиях интерпретатора была логика Если бы PHP воспринимал бы 1 как строку, это был бы нулевой элемент ассоциированного массива. Ну да ладно, фиг с ним, просто буду иметь в виду. |
|
|
r3ntg3n |
8.10.2012, 15:07;
Ответить: r3ntg3n
Сообщение
#8
|
|
$x=array("1"=>"2"); - предполагается строка "1" соответствует "2" Это не хеш-объект, это массив, здесь все, что не может быть превращено в число, используется в качестве ассоциативного ключа. $x[1] = "2", а мной предполагалось логичное поведение $x[0] = "2". То есть : $x["1"]=$x[0]="2";//это если бы в действиях интерпретатора была логика Извините, но я в ваших размышлениях не вижу логики. Вы сами четко указали, что у вас ключу 1 должно соответствовать значение 2. В чем тут просматривается отсутствие логики? В том, что хотя массив и пустой, у вас элемент добавиться с индексом отличным от нуля? Ну, так добавляйте его как [PHP]$x[] = 2;[/PHP] ему автоматически присвоится следующий незанятый индекс. Вы хотите сказать, что люди, которые пишут языки программирования, ошибаются? |
|
|
alexdrob |
8.10.2012, 17:39;
Ответить: alexdrob
Сообщение
#9
|
|
Я всё равно ен понимаю зачем обращатся по числовому ключу, то етсь по 0, к первому элементу массива, ключ у которого, пусть даже была бы строка '1'?
Ну надо вам именно первый элемент вытащить, так юзайте http://www.php.net/manual/ru/control-structures.foreach.php http://www.php.net/manual/ru/function.array-shift.php http://www.php.net/manual/ru/function.array-slice.php http://www.php.net/manual/ru/function.current.php http://www.php.net/manual/ru/function.next.php http://www.php.net/manual/ru/function.prev.php http://www.php.net/manual/ru/function.list.php Я думаю этих функций хватит для навигации по массиву не по ключам. |
|
|
Den1xxx
|
Сообщение
#10
|
|
Вы хотите сказать, что люди, которые пишут языки программирования, ошибаются? Именно это и происходит. Понимаете, если люди -- это люди, то они могут ошибаться и ошибаются. Я свою задачу уже решил. Но не совсем понятна логика — почему все-таки НЕВОЗМОЖНО преобразовать число в строку? Жестко задать тип? Или Вы считаете что много логики в таких действиях интерпретатора PHP: Например, ключ со значением 8.7 будет в действительности сохранен со значением 8. Серьёзно? PS. Задачу свою решил конечно же. Но осадочек остался. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Помогите вспомнить рекламного бота Телеграм для обмена рекламой | 0 | Mixatraider | 692 | 21.2.2024, 23:42 автор: Mixatraider |
|
Помогите рещить проблему с монитором. Почему низкое разрешение при подключении монитора через displayport? |
0 | Levels | 1695 | 11.12.2020, 0:48 автор: Levels |
|
Помогите кто нибудь получить партнерку Росбанк! | 7 | heisenberg_mw | 2315 | 7.8.2020, 9:28 автор: heisenberg_mw |
|
Помогите найти тему пожалуйста | 7 | virtas | 12414 | 24.7.2020, 17:02 автор: -JamesSmips- |
|
Помогите с поиском доноров | 3 | tehno_music | 3336 | 4.11.2019, 17:15 автор: goblin78 |
Текстовая версия | Сейчас: 29.3.2024, 19:56 |