Ändere ein assoziatives Array in ein indiziertes Array / erhalte ein Zend_Table_Row_Abstract als nicht-assoziativ

Lesezeit: 2 Minuten

Benutzer-Avatar
Ethan

Hallo da draußen in Stackland. Ich habe mich gefragt, ob es eine Funktion oder eine einfache Möglichkeit gibt, ein assoziatives Array in ein indiziertes Array umzuwandeln.

Um das näher auszuführen, verwende ich das Zend-Framework, und ich habe einen Punkt auf meiner Website, an dem ich eine Zeile einer SQL-Tabelle als assoziatives Array herausnehme. Ich habe es über ein Echo in JSON an Javascript übergeben. Ich habe jedoch bemerkt, dass ich die Namen der Spalten meiner Datenbank in Firebug sehen kann. Dass Außenstehende die Namen Ihrer Tabellen und Spalten kennen, ist ein großes Sicherheitsverbot, daher möchte ich es ändern

SQLarray[user_id]
SQLarray[block_id]
SQLarray[b_price] etc.

zu

SQLarray[0]
SQLarray[1]
SQLarray[2] etc.

Gibt es eine gute Möglichkeit, dies zu tun?

Es würde auch funktionieren, Zend_Table_Abstract->fetchAll() ein nicht-assoziatives Array zurückgeben zu lassen, aber ich glaube nicht, dass das möglich ist. Danke für Ihre Hilfe!

Benutzer-Avatar
Ian Elliot

Ist reines PHP ok?

$array = array_values($array);

Quelle

  • Wenn das anfängliche Array aus odbc_fetch_array generiert wurde, kann ich mich darauf verlassen, dass array_values ​​immer die richtige Spaltenreihenfolge der Ergebnismenge berücksichtigt? Es scheint, als könnte ich es.

    – Lonnie Best

    5. Januar 2017 um 20:24 Uhr


Funktion definieren

function array_default_key($array) {
    $arrayTemp = array();
    $i = 0;
    foreach ($array as $key => $val) {
        $arrayTemp[$i] = $val;
        $i++;
    }
    return $arrayTemp;
}

Übergeben Sie das assoziative Array als Parameter und es wird in den Standardindex des Arrays konvertiert. Zum Beispiel: Wir haben Array('2014-04-30'=>43,'2014-04-29'=>41) nach dem Aufruf der Funktion wird das Array sein Array(0=>43,1=>41).

  • Könnten Sie eine Beschreibung oder kurze Erläuterung geben, wie Ihr Code das Problem löst?

    – Illidanek

    9. Juli 2014 um 10:28 Uhr

  • Übergeben Sie einfach ein assoziatives Array als Parameter und konvertieren Sie es in den Standardindex des Arrays. Zum Beispiel: Wir haben Array(‘2014-04-30’=>43,’2014-04-29’=>41) nach dem Aufruf der Funktion Array wird Array(0=>43,1=>41)

    Benutzer3567805

    10. Juli 2014 um 5:09 Uhr

  • Diese Logik ist hilfreich.

    – Vrushal Raut

    17. Dezember 2018 um 8:01 Uhr

Benutzer-Avatar
Kaloy

Für mehrschichtiges Array verwende ich dies:


function getIndexedArray($array) {
        $arrayTemp = array();
        for ($i=0; $i < count($array); $i++) { 
            $keys = array_keys($array[$i]);
            $innerArrayTemp = array();
            for ($j=0; $j < count($keys); $j++) { 

                $innerArrayTemp[$j] = $array[$i][$keys[$j]];                
            }
            array_push($arrayTemp, $innerArrayTemp);
        }
        return $arrayTemp;
    }

es dreht sich um:

(
    [0] => Array
        (
          [OEM] => SG
            [MODEL] => Watch Active2
            [TASK_ID] => 8
            [DEPT_ASSIGNED] => Purchashing  
        )
)

das mögen :

[0] => Array
        (
          [0] => SG
            [1] => Watch Active2
            [2] => 8
            [3] => Purchashing  
        )

Sie können dieses einfache Stück Code verwenden, wenn Sie die eingebaute PHP-Funktion nicht verwenden möchten.

$input_array;           // This is your input array
$output_array = [];     // This is where your output will be stored.
foreach ($input_array as $k => $v){
    array_push($output_array, $v);
}
print_r($output_array);

1333740cookie-checkÄndere ein assoziatives Array in ein indiziertes Array / erhalte ein Zend_Table_Row_Abstract als nicht-assoziativ

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy