首页 > 解决方案 > 不获取数组文本,而只获取输出

问题描述

我有这个代码,从用 php 获得下一个生日到只用 php 在页面上获得即将到来的生日。输出没问题,但看起来像这样:我该array(1) { [0]=> string(9) "Tom(23-5)" }如何解决它只会显示“Tom (23-5)”

$json = '{
    "user": [
          {
    "id": "1",
    "name": "Tom",
    "bday": {
          "month": "5",
          "day": "23"
          }
    },
    {
    "id": "2",
    "name": "Tommy",
    "bday": {
          "month": "1",
          "day": "28"
          }
    },
    {
    "id": "3",
    "name": "Mary",
    "bday": {
          "month": "1",
          "day": "30"
          }
    },
    {
    "id": "4",
    "name": "Kelvin",
    "bday": {
          "month": "1",
          "day": "1"
          }
    },
    {
    "id": "5",
    "name": "Peter",
    "bday": {
          "month": "1",
          "day": "1"
          }
    }

    ]
    }';
$birthday_array = json_decode($json,true);
//var_dump($bir_array);
$result = findBday($birthday_array['user']);
var_dump($result);


function findBday($user_details){
    $this_month = date("n");
    $this_day = date("j");
    $return_array = array();
    $tmp_array = array();
    //make a loop
    foreach ($user_details as $user_detail) {        
        $bday = $user_detail['bday'];
        if($this_month == $bday['month'] && $this_day == $bday['day']){
            $return_array[] = $user_detail['name'] . "(".$bday['day']."-".$bday['month'].")";
        } 
        else {
            $tmp_array[] =  $user_detail;
          }
    }
    if(count($return_array) === 0 && count($tmp_array) > 0)
    {

        //sort using php usort
        usort ($tmp_array, 'sortByOrder'); 
        $closest = null;        
        $tmp_val = "";
        foreach ($tmp_array as $key => $value) {
            $month = $value['bday']['month'];
            $day = $value['bday']['day'];
            if($month == $this_month)
            {
                if($day > $this_day){
                    $tmp_val = $value;
                    break;
                }
            }
            elseif ($month > $this_month) {
                $tmp_val = $value;
                break;
            }
        }      
        if($tmp_val != "")
            $tmp_array = $tmp_val;
        else    
            $tmp_array = $tmp_array[0];
        $bday = $tmp_array['bday'];
        $return_array[] = $tmp_array['name'] . "(".$bday['day']."-".$bday['month'].")";

    }


    return $return_array;
}
function sortByOrder($a, $b) {    
    $day_a = $a['bday'];
    $day_b = $b['bday'];
    if ($day_a['month'] > $day_b['month'])
        return 1;
    elseif($day_a['month'] == $day_b['month'])
    {
        if ($day_a['day'] > $day_b['day'])   
            return 1;
    }

}

谢谢你帮助我。我没有在我添加的页面上发布的帖子上找到答案。所以我想在这里得到一个答案。我对这种编码比较陌生,所以我的问题是。

标签: phparraysjson

解决方案


那是因为结果是一个数组。如果您只想要名字,请阅读数组的第一个条目:

$nextBirthday = $result[0];

如果您只想$result成为名称,请将findBday函数的 return 语句更改为return $return_array[0].


推荐阅读