2016-07-15 13 views
0

Ich habe 2 folgende Daten:Zählfeld in PHP unerwarteten Ausgang geben

$temp = Array 
(
    [@url] => url 
    [@type] => image/jpeg 
    [@expression] => full 
    [@width] => 644 
    [@height] => 429 
) 

$count_total = count($temp); // gives me 5, how can it give me total = 1? 

Array 
(
    [0] => Array 
     (
      [@url] => url1 
      [@type] => image/jpeg 
      [@expression] => full 
      [@width] => 800 
      [@height] => 621 
     ) 

    [1] => Array 
     (
      [@url] => url2 
      [@type] => application/x-shockwave-flash 
     ) 

) 
this is total:2 // this is correct 

Wie kann ich erste Array als 1 zählen lassen?

+6

Wie kann es 1 sein, wenn es 5 Elemente hat? – gontrollez

+0

@gontrollez Ich möchte es machen 1 –

+0

[Count] (http://php.net/manual/en/function.count.php#refsect1-function.count-examples) "nur" zählt die erste "Ebene" von das Array, es sei denn, Sie benutzen 'COUNT_RECURSIVE' - Ein klügerer Weg wäre,' empty(); 'auf dem ersten zu verwenden und dann Count auf 1 zu setzen, wenn es nicht leer ist. – Epodax

Antwort

2

Das Array unten (von Ihnen angegeben)

$temp = Array 
(
[@url] => url 
[@type] => image/jpeg 
[@expression] => full 
[@width] => 644 
[@height] => 429 
) 

haben 5 Werte mit Indizes @url, @type, @expression, @width, @height. So wird es Ihnen immer geben die Zählung 5.

Wenn Sie 1. zählen erhalten möchten Sie haben wie zu tun, unter

$temp = Array(
    array(
     [@url] => url 
     [@type] => image/jpeg 
     [@expression] => full 
     [@width] => 644 
     [@height] => 429 
    ) 
); 

Hier count($temp) geben Ihnen Ausgang 1

0
 $temp = Array 
    (
     [0] => Array 
      (
      [@url] => url1 
      [@type] => image/jpeg 
      [@expression] => full 
      [@width] => 800 
      [@height] => 621 
     ) 
) 

$count_total = count($temp); 

Wenn Ihr Array oben ist, können Sie als 1 zählen;

1

Dies gibt Ihnen die Zählung 1

$temp[] = Array 
(
    [@url] => url 
    [@type] => image/jpeg 
    [@expression] => full 
    [@width] => 644 
    [@height] => 429 
) 

$count_total = count($temp); 
0

Wenn Sie einzelnes Ergebnis bekam, haben Sie folgende Möglichkeiten:

$temp = Array 
(
    [@url] => url 
    [@type] => image/jpeg 
    [@expression] => full 
    [@width] => 644 
    [@height] => 429 
); 

Einzelergebnis:

$new_temp[0] = $temp; 

Sie jetzt bekommen:

count($new_temp); // get 1 
0
$temp = Array 
     (
     [0] => Array 
       (
        [@url] => url 
        [@type] => image/jpeg 
        [@expression] => full 
        [@width] => 644 
        [@height] => 429 
       ) 
     ); 

$count_total = count($temp); //gives you 1 

Problem ist, dass Sie in Ihrem ersten Block des Codes versuchen, die Anzahl der Elemente des Arrays zu zählen, die im zweiten Block insido eines anderen Arrays ist.

0

Es zählt die Anzahl der Elemente im Array. Der erste gibt Ihnen 5, weil das Array 5 Elemente hat. Der zweite gibt Ihnen 2, weil es ein Multi-Array mit 2 Elementen (Arrays) ist.

Um es zu machen zurückkehren Sie das Array innerhalb eines Arrays setzen kann, so wie folgt aus:

Array([0] => Array()) 

Ich hoffe, Ihre Frage damit beantwortet.