0

こんにちは、foreach ループの配列にキーと値のペアを設定しています

例えば

array(2) {
  [0]=>
  array(1) {
  ["resourceType"]=>
  string(4) "File"
  ["resourceName"]=>
  string(4) "Test"

  [1]=>
  array(1) {
  ["resourceType"]=>
  string(4) "File"
  ["resourceName"]=>
  string(4) "Test"
 }

私は foreach ループを介してこれを行っています

foreach ($output as $data) {



$resourceType = strpos($data, "d");

if ($resourceType) {

    $ftpArray[]['resourceType'] = "Folder";
} else {

    $ftpArray[]['resourceType'] = "File";
}

$resourceName = strrchr($data, " ");

$resourceName = trim($resourceName);

if ($resourceName != ".." && $resourceName != "." && $resourceName != "") {

    $ftpArray[]['resourceName'] = $resourceName;

}

}

しかし、出力はこれです

[0]=>
array(1) {
["resourceType"]=>
string(4) "File"
}
[1]=>
array(1) {
["resourceType"]=>
string(4) "Test"
}
[2]=>
array(1) {
["resourceType"]=>
string(4) "File"
}
[3]=>
array(1) {
["resourceName"]=>
string(9) ".htaccess"
}

質問の冒頭で挙げた例ではなく。最初の例のように、配列にキーと値のペアを入力するにはどうすればよいですか。

4

3 に答える 3

1

tmp 配列を作成する

foreach ($output as $data) { 
  $a = array();
  if (strpos($data, "d")) { 
    $a['resourceType'] = "Folder"; 
  } else { 
    $a['resourceType'] = "File"; 
  } 
  $resourceName = trim(strrchr($data, " ")); 
  if ($resourceName != ".." && $resourceName != "." && $resourceName != "") { 
    $a['resourceName'] = $resourceName; 
  } 
  $ftpArray[] = $a; 
} 

を呼び出すたびに$ftpArray[] = 'x'、新しい項目が配列に追加されます。そこに 2 次元キーを追加しても問題ありません。

于 2012-10-11T14:25:02.137 に答える
0

配列にデータ構造を追加したいとします。これで、データ構造を作成し、作業を行って配列に追加します。

foreach ($output as $data) {
  $struct = array('resourceType' = > '', 'resourceName' => '');

  // do stuff, on the struct

  $resourceType = strpos($data, "d");
  if ($resourceType) {
    $struct['resourceType'] = "Folder";
  } else {
    $struct['resourceType'] = "File";
  }

  $resourceName = strrchr($data, " ");
  $resourceName = trim($resourceName);

  if ($resourceName != ".." && $resourceName != "." && $resourceName != "") {
    $struct['resourceName'] = $resourceName;
 }
 $ftpArray[] = $struct;
}

構造は常に作成されるため、前の回答とサブタイルの違いがあることに注意してください。

于 2012-10-11T14:34:18.457 に答える
0

配列に対する各 [] 操作は新しい要素をループに追加するため、一時的な値を作成してからループに追加する必要があります。

$element = array();
// set the data here
$output_array[] = $element

スクリプト文字列の位置が 0 から始まるため、strposを使用したときに文字が見つからなかったことを知る必要がある場合は、FALSE の === または !== を使用して戻り値を確認する必要があります。

于 2012-10-11T14:54:59.757 に答える