从表中获取关联数组中元素的值

4sup72z8  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(259)
$arr = ['b1' => 'banners/5B5C4965B9A50.jpg', 'vid' => 'vid.mp4', 'linked' => 'linkedabc'];

我将上面的数组插入到一个表中(使用 json_encode )所以文件的内容 map 是:

{"b1":"banners/5B5C4965B9A50.jpg","vid":"vid.mp4","linked":"linkedabc"}

现在我要获取并循环这个数组:

$sql = "select map from params where what = 'artb'";
$st = $db->prepare($sql);
$st->execute();
$arrx = $st->fetch();
//$arrx = json_decode($arrx); - also tried here

foreach($arrx as $key => $el){
    if($key == 'b1') {getb1($el);}
}

function getb1($el){
    echo $el;
}

结果: {"b1":"banners/5B5C4965B9A50.jpg","vid":"vid.mp4","linked":"linked"} 我在等你 banners/5B5C4965B9A50.jpg .
怎么了?

fd3cxomn

fd3cxomn1#

$arrx = json_decode($arrx,true);
foreach($arrx as $key => $el){
        if($key == 'b1') {getb1($el);}
    }

在循环之前需要一个数组。您尝试以访问数组的方式访问json对象,这是不可能的。
在那之后,你的代码会运行得很好。

$data = '{"b1":"banners/5B5C4965B9A50.jpg","vid":"vid.mp4","linked":"linkedabc"}';

    $arrx = json_decode($data,true);

    foreach($arrx as $key => $el){
        if($key == 'b1') {getb1($el);}
    }

function getb1($el){
    echo $el;
}

输出为 banners/5B5C4965B9A50.jpg 如期而至

vhipe2zx

vhipe2zx2#

json_decode 然后直接访问密钥。

$arrx = json_decode($arrx['map']);

访问 b1 ,

echo $arrx->b1;

更新后的代码片段如下所示,

$sql = "select map from params where what = 'artb'";
$st = $db->prepare($sql);
$st->execute();
$arrx = $st->fetch();

foreach($arrx as $key => $el){
    $elMap = json_decode($el['map']);
    echo $elMap->b1;
}

相关问题