【发布时间】:2017-03-15 06:52:04
【问题描述】:
我有一个$string:
'Name Height Weight
John 177 142
Jill 156 123
Jacob 183 157'
我正在把它变成如下结构的$array:
Array (
[0] => Array (
['Name'] => 'John'
['Height'] => '177'
['Weight'] => '142'
)
[1] = > Array (
['Name'] => 'Jill'
['Height'] => '156'
['Weight'] => '123'
)
[2] = > Array (
['Name'] => 'Jacob'
['Height'] => '183'
['Weight'] => '157'
)
)
使用以下代码:
$rows = explode("\n",$string); //creates an indexed array of rows as strings
$headers = explode("\t",$rows[0]); //creates an indexed array of headers as strings
$rows = array_slice($rows,1); //removes headers from $rows
$array = Array();
foreach($rows as $row) {
$array[] = array_combine($headers, explode("\t",$row)); //creates associative arrays for each row
}
但是,我无法访问索引 $array 内的关联数组
例如,这不起作用:
echo $array[0]['Name'];
即使echo implode(', ', array_keys($array[0])); 给出:
Name, Height, Weight
我尝试了许多不同的方法来访问索引数组中的关联数组,但都没有成功。我做错了什么?
编辑:
所以,
$string = "Name Height Weight
John 177 142
Jill 156 123
Jacob 183 157";
不起作用,但是
$string = "Name\tHeight\tWeight\nJohn\t177\t142\nJill\t156\t123\nJacob\t183\t157";
确实...
所以我想问题是:有什么区别?我如何将前一个字符串解释为后者?
【问题讨论】:
-
你
print_r($array)了吗?你看到了什么? -
Ermm 不,您的代码生成的数组没有那种格式
-
@u_mulder 是的,我看到了上面提到的数组结构(不包括单引号)
-
@HankyPanky 为什么 print_r() 和 var_dump() 显示的结构是这样的?
-
3v4l.org/NhXGD 与
tabs作为分隔符可以正常工作。确保字符串中的分隔符是制表符。
标签: php arrays associative-array