我有这个:
$strVar = "key value";
我想知道这件事:
array('key'=>'value')
我尝试使用explode(),但这给了我这个:
array('0' => 'key',
'1' => 'value')
原始$ strVar已经是一个爆炸字符串的结果,我正在循环结果数组的所有值。
答案 0 :(得分:43)
不要相信这可以在一次操作中完成,但这应该可以解决问题:
list($k, $v) = explode(' ', $strVal);
$result[ $k ] = $v;
答案 1 :(得分:7)
$end_array(
[key0] => value0,
[key1] => value1,
[key2] => value2
)
输出数组
import UIKit
extension UIApplication {
var screenShot: UIImage? { return keyWindow?.layer.screenShot }
}
extension CALayer {
var screenShot: UIImage? {
UIGraphicsBeginImageContextWithOptions(frame.size, false, UIScreen.main.scale)
if let context = UIGraphicsGetCurrentContext() {
render(in: context)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return screenshot
}
return nil
}
}
答案 2 :(得分:4)
$strVar = "key value";
list($key, $val) = explode(' ', $strVar);
$arr= array($key => $val);
修改强> 我的错误,使用拆分而不是爆炸但是:
截至PHP 5.3.0,split()函数已被弃用。依靠这个 功能非常沮丧
答案 3 :(得分:3)
你可以循环每一个字符串:
$how_many = count($array);
for($i = 0; $i <= $how_many; $i = $i + 2){
$key = $array[$i];
$value = $array[$i+1];
// store it here
}
答案 4 :(得分:2)
试试这个
$str = explode(" ","key value");
$arr[$str[0]] = $str[1];
答案 5 :(得分:2)
$pairs = explode(...);
$array = array();
foreach ($pair in $pairs)
{
$temp = explode(" ", $pair);
$array[$temp[0]] = $temp[1];
}
但似乎很明显,只要您知道数组和explode
。所以可能存在一些你没有给我们的约束。您可以更新您的问题以进行解释。
答案 6 :(得分:1)
另一行:
parse_str(str_replace(' ', '=', $strVar), $array);
答案 7 :(得分:1)
你可以试试这个:
$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;
}
}
}
我知道,这似乎很复杂,但确实有效;)
答案 8 :(得分:0)
如果字符串中有两个以上的单词,请使用以下代码。
$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
均匀定位。
答案 9 :(得分:0)
如果你有一长串由同一个字符分隔的键值对,这个键也分隔了键和值,那么这个函数可以解决这个问题。
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',
]
答案 10 :(得分:0)
list($array["min"], $array["max"]) = explode(" ", "key value");
答案 11 :(得分:0)
如果字符串中包含更多值,则可以使用array_walk()
创建一个新数组,而不用foreach()
或for()
进行循环。
我正在使用仅适用于PHP 5.3+的匿名函数。
// your string
$strVar = "key1 value1&key2 value2&key3 value3";
// new variable for output
$result = array();
// walk trough array, add results to $result
array_walk(explode('&', $strVar), function (&$value,$key) use (&$result) {
list($k, $v) = explode(' ', $value);
$result[$k] = $v;
});
// see output
print_r($result);
这给出了:
Array
(
[key1] => value1
[key2] => value2
[key3] => value3
)
答案 12 :(得分:0)
我正在构建一个应用程序,其中一些信息存储在键/值字符串中。
tic / 4 / tac / 5 / toe / 6
寻找一些不错的解决方案来从这些字符串中提取数据,我在这里遇到了一段时间,然后得到了这个解决方案:
$tokens = explode('/', $token);
if (count($tokens) >= 2) {
list($name, $val) = $tokens;
$props[$name] = $val;
}
if (count($tokens) >= 4) {
list(, , $name, $val) = $tokens;
$props[$name] = $val;
}
if (count($tokens) >= 6) {
list(, , , , $name, $val) = $tokens;
$props[$name] = $val;
}
// ... and so on
由smassey的解决方案自由启发
此代码段将产生以下类型的数组:
$props = [
'tic' => 4,
];
或
$props = [
'tic' => 4,
'tac' => 5,
];
或
$props = [
'tic' => 4,
'tac' => 5,
'toe' => 6,
];
我的两分钱
答案 13 :(得分:-1)
ya的单行:
$arr = array(strtok($strVar, " ") => strtok(" "));
答案 14 :(得分:-2)
我找到了另一种简单的方法:
$a = array_flip(explode(' ', $strVal));