0

我发现我无法弄清楚所需的输出。

我的 JSON 原始数据包含以下内容:

Array
(
    [data] => Array
        (
        
            [0] => Array
                (
                    [title] => currency1
                    [tickers] => Array
                        (
                            [0] => USD
                        )

                )
            
            [1] => Array
                (
                    [title] => currency2
                    [tickers] => Array
                        (
                            [0] => USD
                            [1] => EUR
                        )

                )
                
            [2] => Array
                (
                    [title] => currency3
                    [tickers] => Array
                        (
                            [0] => USD
                            
                        )

                )   

    )   
)

这是我尝试过的

$num =0;
foreach ($json_data as $key => $story){
    
    $num++;
    foreach($story as $subkey => $subvalue){
        if(is_array($subvalue)){
            
                $title = $story[$subkey]['title']; 
                $tickers = $story[$subkey]['tickers'][$num]; 
                
                
                foreach($tickers as $key2 => $val2){
                    
                    if($val2>=1){
                           unset($story);      
                         
                    }else{
                        
                        //echo output
                    }

                }
        }
    }

我想获取数组的所有键,如果代码有多个值,请不要回显它。

示例所需的输出:

curreny1 Key is 0 and tickers is USD
curreny3 Key is 2 and tickers is USD
4

1 回答 1

1

您应该能够遍历data源数据的键,提取标题和代码并在代码计数为 1 时输出结果:

foreach ($json_data['data'] as $key => $story) {
    $tickers = $story['tickers'];
    if (count($tickers) != 1) continue;
    $title = $story['title'];
    echo "$title Key is $key and tickers is {$tickers[0]}\n";
}

输出(用于您的样本数据):

currency1 Key is 0 and tickers is USD
currency3 Key is 2 and tickers is USD

3v4l.org 上的演示

于 2021-05-17T01:11:44.110 回答