Поскольку str
уже является переменной строкового типа, нет необходимости помещать ее в кавычки в этом выражении:
Worksheets("Report").Range("A10:AE6000").AutoFilter Field:=2, criteria:="str"
Измените его на представление переменной: [ 115]
Worksheets("Report").Range("A10:AE6000").AutoFilter Field:=2, criteria:=str
Ну, если вам нужен «умный» способ сделать это, вот он, но он может быть не так удобен для чтения, как простое выполнение цикла.
$merged = array_merge(array_filter($foo, 'strval'), array_filter($bar, 'strval'));
edit: or using +. ..
Попробуйте:
$merged = array_map(
create_function('$foo,$bar','return ($bar?$bar:$foo);'),
$foobar,$feebar
);
Не самое читаемое решение, но оно должно заменять только непустые значения, независимо от того, в каком порядке передаются массивы.
Настройте ваши потребности:
# Replace keys in $foo
foreach ($foo as $key => $value) {
if ($value != '' || !isset($bar[$key])) continue;
$foo[$key] = $bar[$key];
}
# Add other keys in $bar
# Will not overwrite existing keys in $foo
$foo += $bar;
Это поместит дубликаты в новый массив, я не знаю, если это то, что вы хотите.
<?php
$foobar = Array('firstname' => 'peter','age' => '33',);
$feebar = Array('firstname' => '','lastname' => 'griffin',);
$merged=$foobar;
foreach($feebar as $k=>$v){
if(isset($foobar[$k]))$merged[$k]=array($v,$foobar[$k]);
else $merged[$k]=$v;
}
print_r($merged);
?>
Это будет просто гарантировать, что feebar никогда не пропустит значение в foobar:
<?php
$foobar = Array('firstname' => 'peter','age' => '33',);
$feebar = Array('firstname' => '','lastname' => 'griffin',);
$merged=$foobar;
foreach($feebar as $k=>$v) if($v)$merged[$k]=$v;
print_r($merged);
?>
или ofcourse,
<?
function cool_merge($array1,$array2){
$result=$array1;
foreach($array2 as $k=>$v) if($v)$result[$k]=$v;
return $result;
}
$foobar = Array('firstname' => 'peter','age' => '33',);
$feebar = Array('firstname' => '','lastname' => 'griffin',);
print_r(cool_merge($foobar,$feebar));
?>
Если вы также хотите сохранить пустые значения в обоих массивах:
array_filter($foo) + array_filter($bar) + $foo + $bar