Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在foreach循环PHP内的数组中设置值_Php_Arrays_Loops_Foreach_Key Value - Fatal编程技术网

在foreach循环PHP内的数组中设置值

在foreach循环PHP内的数组中设置值,php,arrays,loops,foreach,key-value,Php,Arrays,Loops,Foreach,Key Value,您好,我正在foreach循环的数组中设置一个键值对 foreach ($output as $data) { $resourceType = strpos($data, "d"); if ($resourceType) { $ftpArray[]['resourceType'] = "Folder"; } else { $ftpArray[]['resourceType'] = "File"; } $resourceName = strrchr($data, "

您好,我正在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;

}

}
e、 g

我是通过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"
}
而不是我在问题开始时给出的例子。如何让数组像第一个示例那样填充键值对。

制作一个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'
都会向数组中添加新项。如果您在其中添加了一些第二维度键,则不适用。

您希望将数据结构添加到数组中。这需要创建数据结构,完成工作并将其添加到阵列中:

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;
}

请注意,由于总是创建结构,因此与前面的答案存在子图块差异。

数组上的每个[]操作都会向循环中添加一个新元素,因此您需要创建一个临时值,然后将其添加到循环中:

$element = array();
// set the data here
$output_array[] = $element
脚本字符串位置的第二件事是从0开始,因此如果您需要知道在使用时找不到该字符,您应该使用===或!==检查返回值因为是假的