0

私が達成しようとしていることは単純明快であると信じています。

コンテキストによっては、以下のコードは、指定された距離が指定された近接距離 ($prox) より小さい場合、単純に都市名 ($cityProx) を 1 次元配列 ($validLocationCity) にプッシュします。

if($actualDistance <= $prox)
{   
    array_push($validLocationCity,$cityProx);
}

だからこれでいい。しかし今、この都市の配列を距離に基づいてソートしたいと考えています。

これを達成するための簡単な方法についての私の理論は、距離をキーとして配列に保存し、ksort() を使用できるようにすることです。

if($actualDistance <= $prox)
{   
    $validLocationCitySortDistance[$actualDistance] = $cityProx;
}

上記はこれを達成するための私の最初の試みでしたが、もちろん、同じ距離を持つ都市は、その距離/キーに対して保存された以前の値を上書きします。

キーが同じ、つまり距離が等しい場合、新しい値(都市名)がそのキーに単純に追加/追加されるように、これを実装するにはどうすればよいですか。また、複数の場合で距離が等しいと仮定します。

// 質問終了
//--------------------------------->>

特定のキーが取得された場合、値として新しい配列を追加しようとしました

if($validLocationCitySortDistance[$actualDistance] != null) 
{
    $validLocationCitySortDistance[$actualDistance] [] = $cityProx;
}
else
{
     $validLocationCitySortDistance[$actualDistance] = $cityProx;
}

これは、私がやろうとしていることを行うには、正しくなく、過度に複雑な方法のようです。何回反復する必要があるかわからないので、この方法は最悪です。認めますが、上記の後者の例で正確に何をしているのかを誤解しているだけかもしれません。

誰かがそれを助けることができれば本当に感謝しています.foreachなどを使用してソリューションから値を取得する方法を示す簡単な解決策があるかどうかも尋ねます.

よろしくお願いします

4

1 に答える 1

2

都市名をキーとして使用し、asort() を適用するとうまくいきます。

$myarr = ['delhi' => 12,
          'kolkata' => 30,
          'hyderabad' => 4,
          'adilabad' => 1,
          'vizag' => 10];
asort($myarr);

次に、を使用してキーにアクセスできます

foreach($myarr as $key => $value) {
    echo "{$key} : {$value}";
}

また

array_walk($myarr, function($value, $key) {
   echo "{$key} : {$value} ";
});
于 2012-12-22T11:14:14.480 に答える