2017-05-09 3 views
0

Ich habe ein Problem, ein Array auf einem anderen Array basiert aufzufüllen tryng ... lassen Sie mich erklären Sie das ProblemBestücken Sie ein Array von einem anderen Array

Ich habe dieses Array

$contents = (
    [0] => Array 
     (
      [id] => 1 
      [title] => Text1 
      [slug] => text1 
     ) 
[1] => Array 
     (
      [id] => 2 
      [title] => Text2 
      [slug] => text2 
     ) 
[2] => Array 
     (
      [id] => 3 
      [title] => Text3 
      [slug] => text3 
     ) 
[3] => Array 
     (
      [id] => 4 
      [title] => Text3 
      [slug] => text3 
     ) 

)

Dann habe ich eine Variable $ st innerhalb eines Arrays von den oben genannten Schnecken

foreach($contents as $key => $value) { 
     $st[$key] = $value['slug']; 
    } 

Dann ext I racted das uri Segment von innen Code Zünder mit

$path = $this->uri->segment(1); 

Dann habe ich den Wert von $ Pfad vom $ st Array weg mit:

if(($key = array_search($path, $st)) !== false) { 
     unset($st[$key]); 
    } 

Dann habe ich den $ st Array, um mit

$stack = array_values($st); 

Letzten Endes habe ich durch das neue Array geschlungen und sehen, ob es der Wert innerhalb war, wenn sie wahr ich in der relativen Anordnung geschoben etwa so:

$per[] = array(); 
while($i < count($contents)) { 
     if(in_array($path, $stack) === FALSE) { 
      array_push($per, $percorsi[$i]); 
     } 
     $i++; 
    } 

Am Ende habe ich ein leeres Array, wenn ich, wenn nicht in Array ist, habe ich alle vier Elemente in das neue Array.

Ich hoffe, ich habe mich gut erklärt.

Danke für die Hilfe

Prost

+0

In der while-Schleife Ich habe array_push haben ($ pro, $ percorsi [$ i]); aber ich habe einen Fehler gemacht. im Code ist so: array_push ($ per, $ Inhalt [$ i]); –

+0

Warum nicht stattdessen - 'if (! In_array ($ path, $ stack))'? – Thamilan

+0

Es gab mir alle vier Elemente, ohne die mit $ Pfad Wert –

Antwort

1

dies ändern. Wie Sie Multi-Array definieren. Somit wird der Wert nicht

$per = []; 
+0

True zu überspringen. aber wieder gibt es alle vier Elemente zurück ... es ist wie macht nicht die if-Anweisung –

+0

Tun Sie eine Sache entfernen Sie diese falsche und in anderen Teil zu Array schieben. Echo etwas in der Seite die if-Anweisung – Exprator

+0

funktioniert nicht ... if (in_array ($ path, $ stack)) in der Schleife ist immer wahr oder falsch für alle 4 Fälle. aber es gibt ein in_array() mit $ path = text1 und $ stack = array ('text1', 'text2', 'text3', 'text4); Es ist seltsam hart –

0

Ok eingefügt ich die Lösung gefunden, so ein bisschen den Workflow wie das Ändern:

$per = array(); 
    $path = $this->uri->segment(1); 

    foreach($contents as $key => $value) { 
     $stack[$key] = $value['slug']; 
    } 

    $i=0; 
    while($i <= 3) { 
     if($path !== $stack[$i]) { 
      array_push($per, $contents[$i]); 
     } 
     $i++; 
    } 

Dank. Hier

0

ist einfache Lösung:

$contents = array ( 
0 => Array 
     (
      'id' => 1, 
      'title' => 'Text1', 
      'slug' => 'text1', 
     ), 
1 => Array 
     (
      'id' => 2, 
      'title' => 'Text2', 
      'slug' => 'text2' 
     ), 
2 => Array 
     (
      'id' => 3, 
      'title' => 'Text3', 
      'slug' => 'text3' 
     ), 
3 => Array 
     (
      'id' => 4, 
      'title' => 'Text3', 
      'slug' => 'text3' 
     ) 

); 

$path = 'text3'; //$this->uri->segment(1); 
foreach($contents as $key=>$val){ 
    if(in_array($path, $val)){ 
     unset($contents[$key]); 
    } 
} 
echo "<pre>"; print_r($contents); 

Demo

Verwandte Themen