IF ELSE IF for array inside While循环PHP

时间:2015-02-28 03:37:11

标签: php arrays xml if-statement while-loop

我在这个xml:

中得到了文字标记内的值
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/xml-to-html.xsl"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="Kategori"/>
  </head>
  <results>
    <result>
      <binding name="Kategori">
        <literal datatype="http://www.w3.org/2001/XMLSchema#string">Gerak Kasar</literal>
      </binding>
    </result>
    <result>
      <binding name="Kategori">
        <literal datatype="http://www.w3.org/2001/XMLSchema#string">Gerak Halus</literal>
      </binding>
    </result>
  </results>
</sparql>

使用此代码:

$x = 0;
$kategori = array();
while ($x < count($hasilcek->results->result)) {
$kategori[$x]= $hasilcek->results->result[$x]->binding->literal;
$x++; }

但是当我尝试使用此代码在WHILE内部通过IF ELSEIF获取结果时:

$x = $x-1;
while ($x > -1){
if ($kategori[$x] = 'Gerak Kasar') {echo "Gerak Kasar";}
elseif ($kategori[$x] = 'Gerak Halus') {echo "Gerak Halus";}
else {echo "tidak ada";}
$x--;}

确切的结果应该是:

  

                                       Gerak   Kasar                                           Gerak   豪卢什                    

但为什么我会:

  

Gerak KasarGerak Kasar

我认为在WHILE中为$ kategori []进行IF选择时出现了问题。谁能解释一下?感谢。

2 个答案:

答案 0 :(得分:0)

而不是比较运算符,您正在使用赋值运算符。

if ($kategori[$x] = 'Gerak Kasar') {echo "Gerak Kasar";}
elseif ($kategori[$x] = 'Gerak Halus') {echo "Gerak Halus";}

所以将其改为

 if ($kategori[$x] == 'Gerak Kasar') {echo "Gerak Kasar";}
 elseif ($kategori[$x] == 'Gerak Halus') {echo "Gerak Halus";}

因为if ($kategori[$x] = 'Gerak Kasar')执行时$kategori[$x]始终成为Gerak Kasar。这就是为什么你再次得到相同的结果。

答案 1 :(得分:0)

Selamat Pagi。 :)

试试这个:

$x = $x-1;
while ($x > -1){
if ($kategori[$x] == 'Gerak Kasar') {echo " Gerak Kasar ";}
elseif ($kategori[$x] == 'Gerak Halus') {echo " Gerak Halus ";}
else {echo "tidak ada";}
$x--;}