2016-11-23 3 views
0

Um zu starten, ging ich durch viele andere Stack-Überlauf Beiträge über ähnliche Dinge, aber sie arbeiteten nie für mich.PHP foreach innerhalb einer Funktion

ich in einer meiner Seiten Code Zünder verwendet wird, muss ich ein Array von meinem Controller auf meiner Seite innerhalb einer Funktion ist

function brandnames(){ 
foreach ($database as $value) { 
    $Brand = $value['Brand']; 
} 

Die Fehlermeldung, dass das Array $ Datenbank wird trotz nicht deklariert geschickt nutzen Senden der Informationen von der Steuerung.

$data["database"] = $this->Get_model->brandnames(); 

$this->view("update", $data); 

Wenn verwenden die gleiche forloop außerhalb der Funktion funktioniert es aber das Problem ist, ich es in der Funktion benötigen oder krank 400+ Linien zusätzlichen Code if-Anweisungen verwendet haben.

+3

'$ database' ist in einem anderen Bereich Sie müssen als Parameter in Ihrer Funktion übergeben oder in einem Objekt haben Attribut: –

+0

Was erwartest du von '$ Brand'? Eine einzelne Zeichenfolge oder ein Array? –

+0

Auch die Funktion hat keine Rückgabe. –

Antwort

1

$ Datenbank außerhalb der Markennamen() Umfang, so dass Sie werden Sie es in die Funktion übergeben müssen, wie so:

function brandnames($database){ 
foreach ($database as $value) { 
    $Brand = $value['Brand']; 
} 
$database = $data["database"]; 
brandnames($database); 

Ich würde auch empfehlen, dass Sie alle Datenverarbeitung zu tun, bevor es zu der Ansicht vorbei . Meiner Meinung nach sollten Views keine Funktionen haben und möglichst wenig PHP-Code enthalten.

+0

Hey, das hat so funktioniert, danke. Außerdem dient die Funktion nicht zur Datenverarbeitung. Es zeigt einen anderen Satz von Werten basierend auf der Seite an, von der es umgeleitet wurde. – Yunath

0

Modell-Datei ändern:

function brandnames(){ 
    $Brand = array(); 
    foreach ($database as $value) { 
    $Brand[] = $value['Brand']; 
    } 
    return $Brand; 
} 

Controller:

$data["database"] = $this->Get_model->brandnames(); 

$this->view("update", $data); 

this helps

0

versuchen, mehr selbsterklärend sauberen Code zu schreiben,

  • getBrandNames() anstelle von Markennamen
  • $brandNames[] = $value['brand']; statt $ Brand = $ value ['Brand']; (Sie haben ändern 'Marke' in vielen Orten.
  • Verwendung Räume und richten Code richtig, fn() {

einige Beispielcode

function getBrandNames($data = []) { 
    $brandNames = []; 
    if ($data) { 
     foreach ($data as $value) { 
      $brandNames[] = $value['brand']; 
     } 
    } 

    return $brandNames; 
} 

// Pass $ Datenbankdaten als Argument oder sie bekommen innerhalb der Funktion durch Aufruf der entsprechenden Funktion, statt $ database genauen Namen des Datensatzes verwenden ex $ brandData

Verwandte Themen