60

こんにちは、スタックランドです。連想配列をインデックス付き配列に変更する関数または簡単な方法があるかどうか疑問に思いました。

詳述すると、私はZendフレームワークを使用しており、自分のサイトでSQLテーブルの行を連想配列として取り出すポイントがあります。JSONでエコーされたものを介してjavascriptに渡しました。ただし、Firebugでデータベースの列の名前を確認できることに気付きました。テーブルと列の名前を部外者に知ってもらうことは大きなセキュリティです。

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

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

これを行う良い方法はありますか?

Zend_Table_Abstract-> fetchAll()が非連想配列を返すようにすることもできますが、それは不可能だと思います。ご協力いただきありがとうございます!

4

4 に答える 4

173

純粋なphpは大丈夫ですか?

$array = array_values($array);

ソース

于 2009-06-30T18:40:06.353 に答える
6

関数を定義する

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

連想配列をパラメーターとして渡すと、配列のデフォルトのインデックスに変換されます。例:Array('2014-04-30'=>43,'2014-04-29'=>41)関数の呼び出し後、配列はになりますArray(0=>43,1=>41)

于 2014-07-09T10:10:23.100 に答える
1

多層アレイの場合、私はこれを使用します:


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;
    }

それはこれを回します:

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

これに:

[0] => Array
        (
          [0] => SG
            [1] => Watch Active2
            [2] => 8
            [3] => Purchashing  
        )
于 2020-02-04T15:19:42.370 に答える
0

組み込みのPHP関数を使用したくない場合は、この単純なコードを使用できます。

$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);
于 2015-12-03T10:26:25.863 に答える