私はmysqli_resource(mysqli_queryから返されたもの)と特定の列を引数に取り、それを線形PHP配列として返す関数が必要でした。これは今私が持っているものです:PHP:この機能をより効率的にする方法はありますか? resourceToOneDimensionalArray(リソースを1次元配列に)
function resourceToOneDimensionalArray($resource, $field) {
if($resource == false) return false;
if(is_array($resource)) {
if(is_array($resource[0])) {
$output = array();
foreach($resource as $row) {
array_push($output, $row[$field]);
}
return $output;
}
else {
return $resource; // already a 1D array, return it
}
}
$array = array();
while($row = mysqli_fetch_array($resource)) {
array_push($array, $row[$field]);
}
return $array;
}
私はこれを行うPHP関数について聞いたことがありますが、私はドキュメントで見つけることができません。検索に失敗したか、ドキュメント自体を誤解しているのか、組み込み関数を夢見ているのかはわかりません。
この機能が有効な場合は、それほど優れている場合もあります。コードをスピードアップしようとしています。
なぜ 'if(is_array($ resource))'が真であるべきですか?何らかの理由で配列**または** mysqliリソースになる可能性のある変数を扱いますか? –
正に、私はコードの52の関数のインスタンス化をチェックしなければならないでしょう。あなたは、小切手がそれを大幅に減速させるかもしれないと思われますか? – Bing
いいえ、関数呼び出しごとに1つの小さなif条件しかありません。パフォーマンスに大きな影響はありません。私はリソースがいついつ期待されるのか疑問に思った。結果リソースの1つのフィールドをフィルタリングしています。 mysqli_fetch_allでホールテーブルを取得する前にSQLクエリを変更する方法はないと思いますか?そして、「効率的な」という意味は何ですか?パフォーマンスまたはメモリ消費? –