0
 <?php
            $xml = simplexml_load_string( $response->ApiCallDeatilDataFeedResult );

            foreach ( $xml->call_data as $data )
            {
            ?>
            <tr>

                <td  class="sss"><?php 

                echo $data->call_time;?></td>
                <td  class="sss"><?php 

                $init = $data->call_duration;
$hours = floor($init / 3600);
$minutes = floor(($init / 60) % 60);
$seconds = $init % 60;

echo "$minutes Min : $seconds Sec";
?></td>
                <td  class="sss"><?php echo $data->call_status;?></td>
                <td  class="sss"><?php echo $data->caller_number;?></td>
                <td  class="sss"><?php echo $data->caller_name;?></td>

                <td  class="sss"><?php echo $data->caller_city;?></td>
                <td  class="sss"><?php echo $data->caller_state;?></td>
                <td  class="sss"><?php echo $data->caller_zip;?></td>

            </tr>
            <?php
            }
            ?>
        </table>

xmlを要求している間、昇順で結果を与えるxml応答を受信します。降順でXML応答が必要であり、合計で行数は必要ありません。

4

4 に答える 4

1

Simplexmlは、のイテレータを提供しています。foreach逆にしたい場合は、配列に変換し、配列を逆にしてから、配列をforeach上書きします。

$datas = $xml->call_data;
$datas = iterator_to_array($datas, 0);
$datas = array_reverse($datas);

foreach($datas as $data)
{
    ...
}

$count = count($datas);
于 2012-09-28T11:23:40.587 に答える
1

@Yogesh Sutharの答えは正しい ($xml->call_data の代わりに $xml で count を直接呼び出しているにもかかわらず) ですが、配列インデックスはゼロから始まり、長さ 1 で終わるため、インデックスが間違っていると思います。

編集: @hakraがコメントで述べたように、call_data は配列ではなく、反復可能な SimpleXMLElement です。しかし、議論のために、そうだとしましょう。だから、私はそれがすべきだと思います:

for($i = count($xml->call_data) - 1 ;$i >= 0 ; $i--)

または、インデックスを使用する際の問題を回避したい場合は、call_data が実際に配列である場合は、array_reverseを使用してみてください。

foreach ( array_reverse($xml->call_data) as $data )
于 2012-09-28T11:07:26.237 に答える
1

ソートにはkrsortを使用します。そして、count() を使用して配列をカウントします。

于 2012-09-28T11:08:35.210 に答える
0

countこの例のように、行数に使用forし、降順でループを逆に使用します

for($i = count($xml) ;$i >0 ; $i--)
{
   // your code
}
于 2012-09-28T11:00:44.927 に答える