【问题标题】:Search key pair Array to return the Value NOT the Key PHP搜索密钥对数组以返回值而不是密钥 PHP
【发布时间】:2016-02-02 01:49:56
【问题描述】:

我不确定我的标题是否正确...

我有这个数组:

array (
        'fu' => 'bar',
        'baz' =>
             array (
                 0 => 'bat',
             ),
)

我可以使用:

echo array_search('bar', $myarray);

这将返回bar的key,即:

fu

但是如何搜索 fu 的值呢?

如果我尝试:

echo array_search('fu', $myarray);

我没有得到任何结果。

!!编辑按要求显示更多代码!!

$data = '{fu:"bar",baz:["bat"]}';    
$parsed = array();    
parse_jsobj($data, $parsed);    

现在如果我使用:

var_export($parsed);

我明白了:

array (
        'fu' => 'bar',
        'baz' =>
             array (
                 0 => 'bat',
             ),
)

如果我改用这个:

print_r($parsed);

我明白了:

Array ( [fu] => bar [baz] => Array ( [0] => bat ) ) 

我正在尝试像这样返回 fu 的值:

echo array_search('fu', $parsed);

但我没有得到任何结果。

如果我尝试一下也是明智的:

echo $parsed['fu'];
echo $parsed[0]->fu;
echo $parsed[0];

这个函数似乎只返回 Key 而不会返回 Value。也许我正在寻找不同的功能?

我使用的类是HERE

【问题讨论】:

  • {fu:"bar",baz:["bat"]} 你确定这是 json 字符串吗?它无效,fubaz 缺少引号
  • @Ghost 这就是他使用链接类的原因;它应该解析无效的json。
  • @RichardTheobald 如果您已经拥有该类生成的最终数组,应该相当简单,只需将其视为普通数组即可
  • @Ghost 他有最终的数组,但不幸的是它是一个无效的命名数组。见他发布的print_r; fu 或 baz 周围没有引号,因此不能按名称调用。

标签: php arrays search


【解决方案1】:
echo $myarray[array_search('bar', $myarray)];

我不确定您为什么要这样做,因为您已经知道 fu 的结果。我认为您实际上想要这样做的可能性更大:

echo $myarray['fu'];

编辑: 以上留给后人。在使用更多信息进行编辑后,希望这会起作用:

$parsed2 = $parsed;
$parsed = array();
foreach($parsed2 as $key=>$value){
    if(is_string($key) || is_numeric($key)) {
        $parsed[$key] = $value;
    } else {
        $parsed["'".$key."'"] = $value;
    }
}
unset($parsed2);
echo $parsed['fu'];

如果这不起作用,那我就没有更多的想法了。

【讨论】:

  • 我已经尝试了这两种方法,但都不起作用。我在这里使用这个类 - stackoverflow.com/questions/1554100/… 将没有密钥对的 javascript 数组转换为 php 可读数组。不,我实际上不会知道 fu 在现实世界中的结果。
  • 运行 var_dump($myarray); 并确保数组显示您期望的结果
  • 转储是我在问题中发布的数组
  • 然后请编辑问题并添加更大的代码示例。
  • 看,这就是我要求 var_dump 的原因。 var_export 创建有效的 php 代码,而 var_dump(和 print_r)只是吐出你所拥有的。你得到的是一个无效的命名数组(注意 print_r 上 fu 周围没有引号)。为了返回它,您将不得不在数组上执行一次 foreach 并首先使其有效。我会更新我的答案。
猜你喜欢
  • 2012-04-10
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多