1

MySqli クエリのキーと値のペアで配列を構築したいと考えています。私がこれまでに持っているものは、配列のエントリを上書きします:

$array = array();

    while($row = mysqli_fetch_array($result))
    {
        $difference = abs($base - $row["sql_number"]);
        $array = [$difference => $row["sql_number"]];
        $bar = each($array);
        print_r($bar);
    }

    echo count($array);
    ksort($array);
    echo count($array);

    foreach ($array as $key => $value) {             
        echo "Key: ".$key;
        echo "Value: ". $value;
    }

print_r($bar);mysqli_fetch_array($result)キーと値のペアを正しく出力しますが、からの最新のエントリを出力するだけで、以前のエントリが上書きされるためだと確信しています。ksortそのような配列を作成してから、キー値で並べ替えたいと思います。

4

1 に答える 1

3

あなたの仮定は正しかった。ループ内にあるためprint_r、毎回値を置き換えていますが、毎回出力しています。

この行:

$array = [$difference => $row["sql_number"]];

次のようにする必要があります。

$array[$difference] => $row["sql_number"];

そうすれば、以前の値 ( ) を追跡し、keys新しい値を追加できます。


次の例は、問題を示しています。

$a = array('ok' => 'fine');
$b['ok'] = 'fine';

print_r($a); // Array ( [ok] => fine ) 
echo '<br>';
print_r($b); // Array ( [ok] => fine )
echo '<br><br>';

$a = array('ok2' => 'fine2');
$b['ok2'] = 'fine2';

print_r($a); // Array ( [ok2] => fine2 ) 
echo '<br>';
print_r($b); // Array ( [ok] => fine [ok2] => fine2 ) 
echo '<br><br>';

これ以前の. _ この場合、同じ-s は同じ違いを生成するため、問題にならない可能性があります。それはまだ言及する価値があります。この問題の例:differences$row["sql_number"]

$b['ok'] = 'fine';
print_r($b); // Array ( [ok] => fine )     

echo '<br><br>';

$b['ok'] = 'fine2';
print_r($b); // Array ( [ok] => fine2 ) 
于 2015-11-21T15:35:00.783 に答える