如何从这个多维PHP数组中获取单个值?

76

示例 print_r($myarray)

Array
(
    [0] => Array
    (
        [id] => 6578765
        [name] => John Smith
        [first_name] => John
        [last_name] => Smith
        [link] => http://www.example.com
        [gender] => male
        [email] => email@example.com
        [timezone] => 8
        [updated_time] => 2010-12-07T21:02:21+0000
    )
)

请问如何将$myarray中的值合并成单个变量?

echo $myarray['email'];  will show email@example.com

4
你能澄清一下你所说的“单一格式”是什么意思吗? - Arkaaito
我不知道如何称呼它,但是我想逐一获取数组中的数据。 - wow
2
回显 $myarray ['email'] 显示单个值 email@domain.com。不清楚你在问什么! - Dan Grossman
@Dan Grossman 哈哈,好的,让我举个例子。从数组$myarray中,我该如何获取first_namegender等输出呢? - wow
6个回答

117

请看一下您的print_r中的键和缩进:

echo $myarray[0]['email'];

echo $myarray[0]['gender'];

...etc


我可以通过以下方式在本地实例上回显一个键:echo myarray()["baseurl"];,但是当我推送到远程服务器时,会出现解析/语法错误。为什么会这样? - Michel Joanisse
2
@MichelJoanisse 可能是因为您在远程服务器上使用了较旧的 PHP 版本。该语法不支持 PHP <5.4(http://php.net/manual/en/language.types.array.php#example-102)。 - Samuel Lindblom

45

使用 array_shift 函数

$myarray = array_shift($myarray);

这将把数组元素向上移动一级,您可以访问任何数组元素而无需使用[0]键。
echo $myarray['email'];

将显示email@example.com


22

我认为你想要这个:

foreach ($myarray as $key => $value) {
    echo "$key = $value\n";
}

是的!就是这个。我得到了返回值 0 = Array,但是当我打印 $myarray 时,它显示了输出。 - wow
通过 $myarray[0] 获取了它。谢谢让我学到了新东西 :P - wow

13

你也可以使用 array_column()。它从PHP 5.5开始可用:php.net/manual/en/function.array-column.php

它返回由column_key指定的数组的单个列中的值。 可选地,您可以提供index_key以通过输入数组中的index_key列的值对返回的数组中的值进行索引。

print_r(array_column($myarray, 'email'));

1
echo $myarray[0]->['email'];

只有在传递 stdclass对象 时才尝试此操作。


1
您能给原帖提供更多背景信息吗?例如,解释一下代码中出现了什么问题以及建议的更改如何修复它。另外可能需要详细说明什么是 stdclass object - JeromeFr
1
他正在获取2D数组,并想要2D数组的第一个值。因此,如果他从控制器传递对象到视图中,例如在Laravel(MVC框架)中,他的视图将获得stdclass对象。从该stdclass对象中,如果一个人想要单个值,则可以按照我上面提到的方式打印他的值。有关PHP中更多的stdclass对象,请参见链接:http://php.net/manual/en/language.types.object.php - Masad Ashraf
这肯定不起作用。https://3v4l.org/VRo2O - mickmackusa

1

$myarray的第一个元素是您想要的值的数组。所以,现在,

echo $myarray[0]['email']; // This outputs 'email@example.com'

如果你想让那个数组变成$myarray,那么你只需要这样做。
$myarray = $myarray[0];

现在,$myarray['email']等将按预期输出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接