Я использую закодированную строку в качестве ключа в массиве, а также использует ту же строку в качестве значения в массиве, как показано ниже код указывает:PHP Array Key encoding?
$string = 'something in some encode';
$list = array();
$list[$string]['name'] = $string;
, когда я print_r массив из (просто print_r без заголовков/кодировка), обнаружил, что ключ в массиве и его значение «имя» не являются такими же печатными, как одна и та же строка, похоже, что они имеют различную кодировку.
Я делаю это с китайским символом. В php.ini у меня нет конкретной строки кодирования (не знаю, имеет ли это какое-либо отношение к этому).
Есть ли что-нибудь о строковой кодировке в клавишах Array? Или просто я получил их неправильно? Спасибо за вашу помощь.
Ключи, закодированные в Oneway, не будут очень полезны для него и требуют больше времени для вычисления, просто добавляя строку через '$ test [] ='. Лучше кодировать их в первую очередь, поскольку длина ключа не ограничена. – initall
Это полезно, спасибо! Хотя я не знаю, что вызывает проблему, но для людей это делается на моем пути, вы должны сделать base64/md5/sha в качестве ключа массива вместо закодированных строк. Таким образом, вы не столкнетесь с проблемой «множественных кодировок» в массиве. Все еще не знаю, связано ли это с php.ini. Если у меня будет время, я попробую попробовать. – CNBorn
Приятно знать, что это было полезно. Другая идея состоит в том, чтобы преобразовать вашу кодировку в utf8, прежде чем передавать ее как ключ (в случае, если они не являются UTF8, что я догадываюсь). Хорошего дня. – lepe