2016-07-21 9 views
1

Ich habe Kampf in Satz Startpunkt in PHP-ArrayWie überspringe Schlüssel und Wert von Array innerhalb foreach?

PHP CODE

for($k=0; $k<count($AddClmn); $k++){ 
      $ord = 0; 
      foreach($AddClmn[$k] as $ky=>$vl){ 
       $clmns[] = array('head'=>$ky, 'src'=>$vl, 'typ'=>'datatyp', 'NEMERIC'=>'', 'wdth'=>'70', 'ord'=>$ord); 
       $ord++; 
      } 
     } 
file_put_contents('Tracing.txt', print_r($clmns, true)); 

Meine tatsächliche Ausgabe ist über PHP-Code

Array 
(
[0] => Array 
    (
     [head] => locid 
     [src] => 1 
     [typ] => datatyp 
     [NEMERIC] => 
     [wdth] => 70 
     [ord] => 0 
    ) 

[1] => Array 
    (
     [head] => hhs 
     [src] => 2525252 
     [typ] => datatyp 
     [NEMERIC] => 
     [wdth] => 70 
     [ord] => 1 
    ) 

[2] => Array 
    (
     [head] => LA0 
     [src] => 9831808.388559164 
     [typ] => datatyp 
     [NEMERIC] => 
     [wdth] => 70 
     [ord] => 2 
    ) 
) 

oben Ergebnis i ersten beiden Array überspringen will und ich 3. Array als Start mit Index 0. Wie setze ich den Zeiger oder irgendeinen Weg, um dieser Situation zu begegnen? i außer Ergebnis ist

[0] => Array 
    (
     [head] => LA0 
     [src] => 9831808.388559164 
     [typ] => datatyp 
     [NEMERIC] => 
     [wdth] => 70 
     [ord] => 2 
    ) 

[1] => Array 
    (
     [head] => LA1 
     [src] => 12920638.804462105 
     [typ] => datatyp 
     [NEMERIC] => 
     [wdth] => 70 
     [ord] => 3 
    ) 

wie dieses Problem zu lösen?

+0

'Array ( [0] => Array ( [locid] => 1 [HHS] => 2525252 [LA0] => 9.831.808,388559164 [LA1] => 12920638,804462105 [LA2] = > 6.345.274,235857028 [LA3] => 2.600.257,9218634316 [LA4] => 1.136.632,8957946603 [LA5] => 537362,7534893887 [LA6] => 771.599,00 [LA7] => 941.243,00 [LA8] => 370.525,00 [LA9] => 217441.00 [LA10] => 59977,00 [LA11] => 19811.00 ) 'Das ist eigentlich mein $ AddClmn Array –

Antwort

1

Ich glaube, Sie brauchen diese -

foreach($AddClmn[$k] as $ky=>$vl){ 
    if(substr($ky, 0, 2) === "LA") { 
    //your code 
    } 
} // end for loop 
1
for($k=2; $k<count($AddClmn); $k++){ 
      $ord = 0; 
      foreach($AddClmn[$k] as $ky=>$vl){ 
       $clmns[] = array('head'=>$ky, 'src'=>$vl, 'typ'=>'datatyp', 'NEMERIC'=>'', 'wdth'=>'70', 'ord'=>$ord); 
       $ord++; 
      } 
     } 
file_put_contents('Tracing.txt', print_r($clmns, true)); 

Mit diesem Code ..

1

// Sie haben ein Array wie die

$data = array(
    '0' => 'Hello', //you want to skip this 

    '1' => 'Hello1', //you want to skip this 

    '2' => 'Hello2', 
    ); 

$skipped = array('0', '1'); 

    foreach($data as $key => $value){ 
     if(in_array($key, $skipped)){ 
      continue; 
     } 
     //do your stuf 
    } 
+0

in Ihrem Beispiel gesetzt numerischen Index, aber in meinem Array enthalten Zeichenfolge als Index wie' 'locid' => 15565' –

+0

Wie so wie $ skipped = Array ('locid'); –

+0

Wenn Sie ein Array im Array haben, können Sie dies als $ skipped = array (array ('0', '1')); –

1

// Die folgenden Zeilen werden Entferne Werte aus den ersten beiden Indizes.

unset($array[0]); 
    unset($array[1]); 

// Diese Zeile wird Satz erneut die Indizes (neues Array von '0' gesetzt wird index)

$array = array_values($array); 

// Die folgende Zeile wird der neue Inhalt des Arrays zeigen

print_r($array); 
+0

Ich habe unset() verwendet, aber der 3. Index ist 2, aber ich will 3. Index als 0 nach Unset(); –

0

Mit PHP> = 5.3 Mit dieser Funktion zu glätten Ihr Array um eine Stufe (auch bekannt als eine "Schicht" entfernen):

function flatten(array $array) { 
    $return = array(); 
    array_walk_recursive($array, function($a) use (&$return) { $return[] =  $a; }); 
    return $return; 
} 
Verwandte Themen