我有类似的东西
cp
我需要经过一个foreach循环才能获得SftpClient sftpclient = new SftpClient("hostname", "username", "pwd");
string localFilename = FUupload.PostedFile.FileName;
string remoteFilename = "/wwabc1/test/folder_one/test/" + Path.GetFileName(filename);
using (var fileStream = File.OpenRead(localFilename))
{
sftpClient.UploadFile(fileStream, remoteFilename);
}
对,并且只有没有值的键。
应该检查$Arr1 = array("a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);
,但不起作用。
注意:我不知道按键,因此无法直接调用$key => $value
更新: 问题已关闭。谢谢大家。由于它是写的,没有值的键不是键,而是具有默认整数键的值。因此,如果有人想使用上面的结构,请这样做
isset($value)
答案 0 :(得分:2)
数组的每个元素都有一个键。 “ a3”和“ a4”不是键,它们是具有数字键的元素。如果您对此阵列做var_dump
,就可以确定
array (size=5)
'a1' =>
array (size=2)
0 => string 'a1b' (length=3)
1 => string 'a1b' (length=3)
'a2' =>
array (size=2)
0 => string 'a2b' (length=3)
1 => string 'a2b' (length=3)
0 => string 'a3' (length=2)
1 => string 'a4' (length=2)
'a5' =>
array (size=2)
0 => string 'a5b' (length=3)
1 => string 'a5b' (length=3)
您可以使用array_filter
功能并使用数字键获取元素并检查键类型(例如,使用帮助is_int
功能)
$arr = array(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);
$newArr = array_filter($arr, function($key) {
return is_int($key);
}, ARRAY_FILTER_USE_KEY);
或foreach
语句:
$arr = array(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3",
"a4",
"a5" => array("a5b", "a5b")
);
$newArr = [];
foreach ($arr as $key => $value) {
if (is_int($key)) {
$newArr[] = $value;
}
}
答案 1 :(得分:2)
由于您混合了键和“ a#”之类的值,因此数组看起来很奇怪。等效于:
$Arr1 = array
(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
0 => "a3",
1 => "a4",
"a5" => array("a5b", "a5b")
);
我想你的意思是这个:
$Arr1 = array
(
"a1" => array("a1b", "a1b"),
"a2" => array("a2b", "a2b"),
"a3" => null,
"a4" => null,
"a5" => array("a5b", "a5b")
);
然后您可以使用foreach进行访问:
foreach ($Arr1 as $key => $value)
echo "$key => " .
( is_array($value)
? implode(', ', $value)
: $value
),
'<br>', PHP_EOL
;
或者,如果您不希望键具有空值:
foreach ($Arr1 as $key => $value)
if(is_array($value))
echo "$key => ", implode(', ', $value), '<br>', PHP_EOL;
或者只是
$filered = array_filter( $Arr1, function($v) { return is_array($v); } );
foreach ( $filered as $key => $sub_array)
echo $key, ' => ', implode(', ', $sub_array), '<br>', PHP_EOL;
答案 2 :(得分:0)
为什么不将“ a3”和“ a4”的值设置为空数组(“ => array()”)? 然后,您可以循环浏览并可以使用“ ax”键访问值。在循环中,您处理数据,但数组为空。