explode () в пару $ key => $ value

У меня есть это:

$strVar = "key value"; 

И я хочу получить его в этом:

 array('key'=>'value') 

Я попробовал это с explode (), но это дает мне следующее:

 array('0' => 'key', '1' => 'value') 

Первоначальный $ strVar уже является результатом взорванной строки, и я перебираю все значения результирующего массива.

Related of "explode () в пару $ key => $ value"

Не верьте, что это возможно за одну операцию, но это должно сделать трюк:

 list($k, $v) = explode(' ', $strVal); $result[ $k ] = $v; 
 $strVar = "key value"; list($key, $val) = explode(' ', $strVar); $arr= array($key => $val); 

Изменить: моя ошибка, вместо того, чтобы взорваться, используйте split:

Функция split () была DEPRECATED с PHP 5.3.0. Опираясь на эту особенность, очень обескуражен

Вы можете зацикливать каждую вторую строку:

 $how_many = count($array); for($i = 0; $i <= $how_many; $i = $i + 2){ $key = $array[$i]; $value = $array[$i+1]; // store it here } 
 $my_string = "key0:value0,key1:value1,key2:value2"; $convert_to_array = explode(',', $my_string); for($i=0; $i < count($convert_to_array ); $i++){ $key_value = explode(':', $convert_to_array [$i]); $end_array[$key_value [0]] = $key_value [1]; } 

Вывод массива

 $end_array( [key0] => value0, [key1] => value1, [key2] => value2 ) 

Попробуй это

 $str = explode(" ","key value"); $arr[$str[0]] = $str[1]; 
 $pairs = explode(...); $array = array(); foreach ($pair in $pairs) { $temp = explode(" ", $pair); $array[$temp[0]] = $temp[1]; } 

Но кажется очевидным, что вы, кажется, знаете массивы и explode . Таким образом, могут быть некоторые ограничения, которые вы нам не дали. Вы можете уточнить свой вопрос, чтобы объяснить.

Вы можете попробовать следующее:

 $keys = array(); $values = array(); $str = "key value"; $arr = explode(" ",$str); foreach($arr as $flipper){ if($flipper == "key"){ $keys[] = $flipper; }elseif($flipper == "value"){ $values[] = $flipper; } } $keys = array_flip($keys); // You can check arrays with //print_r($keys); //print_r($values); foreach($keys as $key => $keyIndex){ foreach($values as $valueIndex => $value){ if($valueIndex == $keyIndex){ $myArray[$key] = $value; } } } 

Я знаю, он кажется сложным, но он работает;)

Еще одна строка:

 parse_str(str_replace(' ', '=', $strVar), $array); 

Если в строке содержится более двух слов, используйте следующий код.

  $values = explode(' ', $strVar); $count = count($values); $array = []; for ($i = 0; $i < $count / 2; $i++) { $in = $i * 2; $array[$values[$in]] = $values[$in + 1]; } var_dump($array); 

$array хранит странно позиционированное слово как key и равномерно позиционированное слово $value соответственно.

Если у вас длинный список пар ключ-значение, разделенных одним и тем же символом, который также ограничивает ключ и значение, эта функция выполняет трюк.

 function extractKeyValuePairs(string $string, string $delimiter = ' ') : array { $params = explode($delimiter, $string); $pairs = []; for ($i = 0; $i < count($params); $i++) { $pairs[$params[$i]] = $params[++$i]; } return $pairs; } 

Пример:

 $pairs = extractKeyValuePairs('one foo two bar three baz'); [ 'one' => 'foo', 'two' => 'bar', 'three' => 'baz', ] 

Одиночная линия для ya:

 $arr = array(strtok($strVar, " ") => strtok(" ")); 

Я нашел другой простой способ сделать это:

$ a = array_flip (explode ('', $ strVal));