目次
ディスカッションへの返信 (解決策)
ホームページ バックエンド開発 PHPチュートリアル 二次元配列への要素の追加についてアドバイスをお願いします。

二次元配列への要素の追加についてアドバイスをお願いします。

Jun 27, 2016 pm 01:18 PM

<?php        while(mysql_fetch_array){                $arr[$key][] = array("value"=>$value);                if($somecondition){                        foreach($arr as $k => $v){                                $arr[$k][] = array("value"=>"");                        }                }        }?>
ログイン後にコピー


ループで二次元配列を作成して要素を追加する状況がありますが、特定の条件 $somecondition が発生すると、配列内の各 $key に空の値を持つ要素が追加されます。

追加した後、見てみると、追加された空の要素がすべて配列の先頭に移動していることがわかりました。これはなぜですか?

どうすれば正しく追加できますか?


ディスカッションへの返信 (解決策)

指定された値にキー名が指定されていない場合は、現在の最大の整数インデックス値が取得され、新しいキー名はその値に 1 を加えたものになります。指定したキー名にすでに値が設定されている場合、その値は上書きされます。

少なくともあなたの説明には問題があります $key と $k は同じものではありません
したがって
$arr[$key][] = array("value"=>$value)

$arr [$ k][] = array("value"=>"");
代入の場所が違います

必要な形式の例を投稿した方が良いです

少なくとも何か間違っていますあなたの説明 $key と $ k は同じものではありません
$arr[$key][] = array("value"=>$value);

$arr[$k][] = array( "value"=> "");
割り当ての位置が異なります

必要な形式の例を投稿した方が良いです



私の全体のプロセスは次のとおりです。
まず、while(mysql_fetch_array($res1)) 内の各キーの順序を決定します。
次に、while(mysql_fetch_array($res2)) の各キーに要素を追加し、特定の条件が発生したときに空の要素を追加します。

配列に対して得られたものは次のとおりです:
{
key1:[[],{"value":""},{"value":""},{"value":""},{"value" : 36.63},{"値":35.97},{"値":32.8},{"値":32.65}
key2:[[],{"値":""},{"値":"" } ,{"value":""},{"value":36.63},{"value":35.97},{"value":32.8},{"value":32.65}
}
そして、私が当初計画していたこと取得する配列は次のとおりです:
{
key1:[{"value":36.63},{"value":35.97},{"value":""},{"value":""},{"value" :"" },{"値":32.8},{"値":32.65}
key2:[{"値":36.63},{"値":35.97},{"値":""},{ "value" :""},{"value":""},{"value":32.8},{"value":32.65}
}

配列の前の余分な [] は描画には影響しません現時点では、標準形式に一致しますが、最終的には描画に影響しません。

少なくともあなたの説明には問題があります $key と $k は同じものではありません

したがって
$arr[$key][] = array("value"=>$value)

$arr [$ k][] = array("value"=>"");
代入の位置が異なります

必要な形式の例を投稿した方が良いです

または、私のLSのロジック、どうすればいいですか?

その場合、関連クエリを実行してみてはいかがでしょうか?

2L に戻って、foreach に $k の名前を出力しました。これは実際、外側の while の $key と同じです。


5L に戻ると、データ インベントリには多数のタイム ポイントが含まれており、各タイム ポイントには $key に対応する数十の値があります

ここで行うことは、たとえば、1 日全体についてクエリを実行することです。を計算し、総合順位を計算して$keyの順位を決定し、再度割り当てを確認します。

データベースに直接クエリを実行したい場合、現時点では MySQL の select コマンドに慣れておらず、特定のキーが前の時点では 10 番目の位置にあり、次の時点では 11 番目の位置にあることが心配です。その時点では統計は利用できません

2 回のクエリの間でデータが変更された場合、それをどのように処理しますか?

今回初めて、全体の傾向をある程度反映できる上位 10 位までの総合順位を算出するために、より広い範囲を選択しました。中間の時点の順位は総合順位と同じではありません。 、しかし、全体的な傾向は同じであり、私がチェックしたものはまだ履歴です。


その後、何らかの理由により、特定の時点でレコードが存在せず、この時点で各キーに null 値を挿入したいのですが、挿入された null 値がなぜ先頭に来るのかわかりません。配列。 。 。 。

ちなみに、一次元配列であればarsort関数を直接使ってランキングすることもできますが、json形式が固定されているため、形式で指定された二次元のものしか使えません。

言いたいことはなんとなく分かります

れーん

どういうことかなんとなく分かりました
Python code?123456while(mysql_fetch_array){ $arr[$key][] = array("value"=>$value){ $arr[$key]; [ ] = array("value"=>""); }}

.
$somecondition は、mysql_fetch_array の時点が前の時点と大きく異なると判断し、それに応じて時点を補います。区間に、この時点ではすべてのキーに null 値を埋めなければならないので、foreach を使用して再度走査したところ、埋められた null 値が に行きました。アレイの先頭。

やはり foreach を使用する必要があります。 。

アイデアは次のようになります
while(mysql_fetch_array){
if($somecondition){ //ギャップが大きすぎる場合
$arr[$key][] = array("value"=>"") ; // 次に null 値を挿入し、複数ある場合は for ループを使用します
$arr[$key][] = array("value"=>$value) // データを追加します
}

アイデアは次のようになります

while(mysql_fetch_array){
if($somecondition){ //ギャップが大きすぎる場合
$arr[$key][] = array("value"=>""); // null 値を複数挿入します for ループを使用します
}
$arr[$key][] = array("value"=>$value) = array("value"=>$value) } //データを追加します
}
...

わかっていますなにが問題ですか。 。私のmysqlによってクエリされるステートメントは、タイムポイントの順序ではなく、キーの順序になっています。 。 。なんという詐欺だ。 。

二度確認しませんでしたか?

1回目はキー順に並べます
2回目は時点順に並べます

考え方はこんな感じになるはずです

while(mysql_fetch_array){
if ($somecondition){ //ギャップがある場合大きすぎます
$arr[$ key][] = array("value"=>""); // null 値を挿入、複数ある場合は for ループを使用します
}
$arr[$key][] = array("value"=> ;$value); // データを追加します
}
……

ありがとうございます。 。実際、ロジックと実装は正しいです。これは、mysql が苦手で、group by の後の 2 つの条件が逆の順序で書かれているためです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles