如何从foreach()结果中删除最后的结果

时间:2015-06-01 19:24:38

标签: php json

我有一些PHP代码可以从JSON中获取数据。代码重新编译所有用户名,包括要显示的当前用户名。我的问题是,我怎么才允许它只显示最近的用户名而不是当前用户名?

我正在使用Minecraft API,我可以找到我得到的JSON代码here.

  

请注意,_scrunch是当前的用户名。

这是我的代码,显示了名称:

// Save the uuid
$uuid = $json->id;

// Get the history (using $json->uuid)
$content = file_get_contents('https://api.mojang.com/user/profiles/' . urlencode($uuid) . '/names');

// Decode it
$json = json_decode($content);

$names = array(); // Create a new array

foreach ($json as $name) {
    $input = $name->name;

    if (!empty($name->changedToAt)) {
        // Convert to YYYY-MM-DD HH:MM:SS format
        //do

       // $input .= ' (changed at ' . $time . ')';
    }

    $names[] = $input; // Add each "name" value to our array "names"

}

并显示它

<?php echo implode(', ', $names) ;?>

任何帮助都会很棒!谢谢!

3 个答案:

答案 0 :(得分:2)

如果您正在寻找删除数组的最后一个元素,array_pop()应该可以解决问题。然后你的foreach循环将查看除最后一个元素之外的所有元素。

$array = [1, 2, 3]; // sample array
$last = array_pop($array); // remove last element of array and store it into a variable => $array = [1, 2]
// do stuff
foreach($array as $element) {
  ...
}
array_push($array, $last); // push the element to the back of the array => $array = [1, 2, 3]

答案 1 :(得分:1)

在您的循环中,只需检查并排除用户的姓名:

foreach ($json as $name) {
    $input = $name->name;
    if ($input != _scrunch) {

        if (!empty($name->changedToAt)) {
            // Convert to YYYY-MM-DD HH:MM:SS format
            //do

           // $input .= ' (changed at ' . $time . ')';
        }

        $names[] = $input; // Add each "name" value to our array "names"

    }
}

答案 2 :(得分:0)

只需通过count函数计算数组中返回的数据量,然后通过执行$foo ++;

对foreach循环中的每个项目进行排名
// Save the uuid
$uuid = $json->id;

// Get the history (using $json->uuid)
$content = file_get_contents('https://api.mojang.com/user/profiles/' . urlencode($uuid) . '/names');

// Decode it
$json = json_decode($content);
$total = count($json); // This counts the amount of items returned
$rank = 0; // Declaring the rank for future use in the foreach loop
$names = array(); // Create a new array

foreach ($json as $name) {
    $rank ++;
    $input = $name->name;
    if ($rank == $total){
    // Do something if this is the last row

    }
    if (!empty($name->changedToAt)) {
        // Convert to YYYY-MM-DD HH:MM:SS format
        //do

       // $input .= ' (changed at ' . $time . ')';
    }

    $names[] = $input; // Add each "name" value to our array "names"

}