У меня есть это:
$strVar = "key value";
И я хочу получить его в этом:
array('key'=>'value')
Я попробовал это с explode (), но это дает мне следующее:
array('0' => 'key', '1' => 'value')
Первоначальный $ strVar уже является результатом взорванной строки, и я перебираю все значения результирующего массива.
Не верьте, что это возможно за одну операцию, но это должно сделать трюк:
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));