所以我基本上创建了这个数组,将索引数组转换为assoc数组。
说这是我的输入数组
$input = array('this is the title','this is the author','this is the location','this is the quote');
这是我的功能
function dynamicAssocArray($input)
{
$result = array();
$assocArrayItems = array('title', 'author', 'location', 'quote');
$assocItem;
foreach ($input as $value)
{
for ($i=0; $i <= 3; $i++)
{
$assocItem = $assocArrayItems[$i];
}
$result = $result[$assocItem] = $value;
}
return $result;
}
我收到此错误“警告:非法字符串偏移'引用'”,输出为字符串(1)“t”
我完全不明白,所以任何帮助都会非常感激。
答案 0 :(得分:2)
您不必在php中启动变量,这会使行$assocItem;
变得毫无意义。
下面的代码可以解决问题。
function dynamicAssocArray($input)
{
$result = array();
$assocArrayItems = array('title', 'author', 'location', 'quote');
foreach ($input as $i => $value)
{
$assocItem = $assocArrayItems[$i];
$result[$assocItem] = $value;
}
return $result;
}
甚至更好地使用array_combine():
function dynamicAssocArray($input)
{
$assocArrayItems = array('title', 'author', 'location', 'quote');
$result = array_combine($assocArrayItems, $input);
return $result;
}
答案 1 :(得分:1)
你是
$assocItem
(仅留下最后一个值)$value
分配给您的$result
数组(使其成为字符串)。你真的需要循环吗?只有四个值,更容易明确地写出来:
function dynamicAssocArray($input)
{
return array(
'title' => $input[0],
'author' => $input[1],
'author' => $input[2],
'quote' => $input[3]
);
}
或者,正如deceze将其放在评论主题中:只需使用内置array_combine
函数
答案 2 :(得分:1)
试试这个
function dynamicAssocArray($input)
{
$result = array();
$assocArrayItems = array('title', 'author', 'location', 'quote');
$assocItem;
for ($i=0; $i <= 3; $i++)
{
$assocItem = $assocArrayItems[$i];
$result[$assocItem] = $input[$i];
}
return $result;
}
echo "<pre>";
print_r(dynamicAssocArray($input));
输出
Array
(
[title] => this is the title
[author] => this is the author
[location] => this is the location
[quote] => this is the quote
)