2012-04-24 9 views
0

私は自由な意志で手動で書かれているので、外観によって並べ替える必要がある配列を持っています。なお、値が表示されることが予想されるヒントです:あなたは値が何もすることができます参照してください、私は必要なもののようPHPの外観による配列の並べ替え

$options = array("the array retrieved from some forms"); 
    $items = array(); 
    foreach ($options as $key => $val) { 
    switch ($key) { 
     case 'three': 
     $items[]   = "this should come first"; 
     $items[]   = "now the second in order"; 
     $items[]   = "the third"; 
     $items[]   = "forth"; 

     switch ($val) { 
      case 'a': 
      case 'b': 
      $items[]  = "fifth"; 
      $items[]  = "should be six in order"; 
      break; 

      case 'c': 
      default: 
      $items[] = "7 in order"; 
      break; 
     } 

     break; 

...............

それらの外観に基づいてアイテムを爆縮して表示することである。そのすべての手動の​​注文、最初に来るものは一番上に印刷する必要があります。

"this should come first"; 
"now the second in order"; 
"the third"; 
"forth"; 
"fifth"; 
"should be six in order"; 
"7 in order"; 

現在予期しない:

は期待

"should be six in order"; 
"forth"; 
"7 in order"; 
"the third"; 
"fifth"; 
"this should come first"; 
"now the second in order"; 

しかし、私はこのhttp://www.php.net/manual/en/array.sorting.php からソートのいずれかを適用することができないよう、私はそれらの$アイテムがどこかに命じている疑いがあります私は並べ替える方法がない形で私は上から下に向かって欲しいと思うので、出力と注文を書く力があります。しかし、私は自由に並べ替える必要があるので、キーを$ itemに入れることはできません。

私は出力を見て、キーは期待どおりに並べ替えられていません。

どのようなヒントもありがとうございます。ありがとう

+1

がある場合は、'構文を、PHPは、配列の末尾に値を追加します。あなたのスクリプトの実行順序が順不同であるため、あなたの配列は順不同です。 – qJake

+0

私の問題を説明する音。ありがとう – swan

答えて

0

私たちにはPHPソースが見える方法はコンパイラと同じではありません。そういうわけではありません。しかし、ソース上で正規表現を実行すると(良い方法ではない)可能です。

例:

$source = file_get_contents(__FILE__); 
preg_match_all('#\$items\[\]\s*=\s*"([^"]+)"#', $source, $match); 
// now $match[1] contains the strings. 
$strings = $match[1]; 
+0

正当な正解です。ありがとう – swan

+0

これはひどい答えです、他の投稿された答えはより正確です。 – qJake

2

あなたの配列を満たすのステップは、あなたがしたい順番になっていないようです。

多分あなたは私はあなたがuncompleteコードを掲載するので、これは、場合に役立ちますわからない「キーポインタ」

$ikey = 0; 
$options = array("the array retrieved from some forms"); 
    $items = array(); 
    foreach ($options as $key => $val) { 
    switch ($key) { 
     case 'three': 
     $items[$ikey++]   = "this should come first"; 
     $items[$ikey++]   = "now the second in order"; 
     $items[$ikey++]   = "the third"; 
     $items[$ikey++]   = "forth"; 

     switch ($val) { 
      case 'a': 
      case 'b': 
      $items[$ikey++]  = "fifth"; 
      $items[$ikey++]  = "should be six in order"; 
      break; 

      case 'c': 
      default: 
      $items[$ikey++] = "7 in order"; 
      break; 
     } 

     break; 

を挿入たとえば、あなたが欲しいもの

を達成するために、いくつかのトリックを使用することができます。私の英語のため申し訳ありません

、あなたは `$のVAR [] = ...使用すると間違い

+0

ありがとうございますが、私はそれが動作していないように思えます – swan

関連する問題