解码json和foreach显示键但不是值

时间:2015-05-06 00:34:49

标签: php arrays json foreach

我似乎无法从下面的foreach中获得价值。我需要基本上创建一个循环,然后我可以根据选择创建html按钮。

我还在此文本下方添加了一个片段示例,以显示我想在foreach中实现的内容。我只需要弄清楚如何提取值,以便我可以做到这一点。

我基本上想要创建一个foreach循环来检查用户添加了多少按钮,然后使用href中的链接和自定义按钮名称显示循环中的每个按钮。我还要检查他们从showBtn值中选择1,2,3,4以确定要输出的html类型。

if showBtn==1 { <a herf="btnMenuLink">btnName</a> }

if showBtn==3 { <a herf="btnPhone">btnName</a> }

我有以下代码,我已经提供了数据库内容的输出以及var_dump,这样您就可以看到信息的存储方式。

以下代码确实为我输出了密钥,但它不会输出值。我怀疑它是因为我的价值观也是一个阵列。我究竟如何在循环内的循环内创建循环并仍然实现我上面解释的内容?

<?php

$jsonresult =  $column->links;
$array = json_decode($jsonresult,true);

// The databse TEXT field    
/*{
"showBtn":["3","3"],
"btnMenuLink":["101","101"],
"btnArticleLink":["2","2"],
"btnPhone":["036244789","0404256478"],
"btnURL":["",""],
"btnName":["Office","Mobile"]
}*/

// The Var dump $array    
/*  array(6) {
    ["showBtn"] => array(2) {
        [0] => string(1)
        "3" [1] => string(1)
        "3"
    }["btnMenuLink"] => array(2) {
        [0] => string(3)
        "101" [1] => string(3)
        "101"
    }["btnArticleLink"] => array(2) {
        [0] => string(1)
        "2" [1] => string(1)
        "2"
    }["btnPhone"] => array(2) {
        [0] => string(9)
        "036244789" [1] => string(10)
        "0404256478"
    }["btnURL"] => array(2) {
        [0] => string(0)
        "" [1] => string(0)
        ""
    }["btnName"] => array(2) {
        [0] => string(6)
        "Office" [1] => string(6)
        "Mobile"
    }
} */

foreach($array as $key => $value) { ?>    
<?php echo $key;?>:<?php echo $value;?><hr/>    
<?php } ?>

我仍然坚持这个,

请在下面找到以下内容:

$jsonresult = '{"showBtn":["3","3"],"btnMenuLink":["101","101"],"btnArticleLink":["2","2"],"btnPhone":["036244789","0404256478"],"btnURL":["",""],"btnName":["Office","Mobile"]}';

$array          =   json_decode($jsonresult,true);

foreach ($array as $key => $value) {
    foreach ($value as $next_key => $next_value) { 
        echo $key.":".$next_key.":".$next_value."\n";
    } }

// I want this

// if(showBtn==3) {

// echo '<a herf='tel:btnPhone'>btnName</a>';

// }

// the result would be

// <a href="tel:036244789">Office</a> <a href="tel:0404256478">Mobile</a>

2 个答案:

答案 0 :(得分:1)

那是因为你的$value是一个数组,而不是一个设定值。您需要再次循环它:

foreach($array as $key => $values) {
    foreach($values as $item) {
         echo $key . ":" . $item;
    }
    echo "<hr />";
}

Example

答案 1 :(得分:0)

"some/class/in/package/[A-Za-z][A-Za-z0-9_]*\\.class"

所以foreach ($array1 as $key1 => $value1) { foreach ($value as $key2 => $value2) { echo "this is a nested loop"; } } 将包含数组中的元素。

此外,如果您在执行$value2时没有看到任何错误或警告消息,则应启用echo $value;,因为它在开发时非常有用。