Как преобразовать разделенную запятыми строку значения ключа в ассоциативный массив в PHP - PullRequest
0 голосов
/ 18 сентября 2018

Я попытался найти быстрое решение для преобразования строки с разделенным запятыми ключом => значение в ассоциативный массив, но не смог найти ничего. Поэтому я должен был быстро исправить это.

антецедент

Я сгенерировал массив некоторых элементов формы, используя Jquery, для отправки через ajax. Итак, у меня есть что-то вроде:

var myarray = [];
var string1 = 'key1=>'+form['value1'].value; //and we have string2 and more
myarray.push(string1);

Затем я отправил «myarray» как данные в скрипт обработки формы.

ПРОБЛЕМА

Теперь у меня есть массив для работы в моем PHP-скрипте. У меня есть следующее:

function($var,$data){
$string = $data('myarray'); //array created earlier with jquery
}

Что совпадает с:

...
$string = array(0=>'key1=>value1',1=>'key2=>value2');
...

Значит, мне нужно:

...
$string = array('key1'=>'value1','key2'=>'value2');
...

РЕШЕНИЕ

...
$string = $data('myarray');
$string1 = array();
foreach($string as $value){
    $split = explode('=>',$value);
    $string1[$split[0]]=$split[1];
}
...

Теперь я могу получить доступ к значению каждого ключа как:

echo $string1['key1']; //gives value1

Это решение также может быть использовано в ситуации, когда у вас есть:

$string = 'key1=>value1,key2=>value2...';
$string = explode(',',$string); // same as $string = array('key1'=>'value1',...)
$string1 = array();
foreach($string as $value){
    $split = explode('=>',$value);
    $string1[$split[0]]=$split[1];
}

Решение гораздо проще, чем я ожидал, но если вы знаете лучший способ сделать такое преобразование, не стесняйтесь предлагать.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Используйте explode() для разделения строки.

$string = 'key1=>value1,key2=>value2,key3=>value3';
$pairs = explode(',', $string);
$data = array();
foreach ($pairs as $pair) {
    list($key, $value) = explode('=>', $pair);
    $data[$key] = $value;
}
var_dump($data);

DEMO

0 голосов
/ 18 сентября 2018

Вы можете добавить в качестве пары ключ-значение в JavaScript.Тогда вам не нужно делать никаких операций, вы можете получить доступ непосредственно в PHP.

var myarray = {};
myarray['key1'] = form['value1'].value;

В PHP:

$arr = $data('myarray');
echo $arr['key1']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...