我需要在数组过滤和修剪空格后更改数组的索引。
$officials_arr= $this->input->post('officials');
$officials = array_filter(array_map('trim', $officials_arr));
print_r($officials);
期望的输出:
(
[0] => off1
[1] => off2
[2] => off3
)
但我的输出为:
Array
(
[0] => off1
[1] => off2
[3] => off3
)
答案 0 :(得分:3)
使用<bean id="velocityEngine"class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<map>
<entry key="resource.loader" value="ds"/>
<!--<entry key="ds.resource.loader.class" value="org.apache.velocity.runtime.resource.loader.DataSourceResourceLoader"/>--><!--should be left out-->
<entry key="ds.resource.loader.resource.table" value="templates" />
<entry key="ds.resource.loader.resource.keycolumn" value="tid" />
<entry key="ds.resource.loader.resource.templatecolumn" value="template" />
<entry key="ds.resource.loader.resource.timestampcolumn" value="updated" />
<entry key="ds.resource.loader.instance" value-ref="dataSourceLoader" />
<entry key="ds.resource.loader.cache" value="true" />
</map>
</property>
,请参阅here。
array_values
答案 1 :(得分:1)
而不是使用:$officials=array_values(array_filter(array_map('trim',$officials_arr)));
(...顺便说一句,它将从数组中删除所有null,false-y,zero-ish值 - 这是array_filter()
的贪婪默认行为)我建议您在单行中仅使用array_walk()
和strlen()
以更可靠,更有效的方式生成所需的输出。我的方法将删除零长度字符串(null / false / empty),从每个值的两边修剪空格,并重新索引结果数组。
输入(通知,注意我已添加空格和空值):
$officials_arr=[' off1' , 'off2' , '' , 'off3 ' , null];
space ^ empty string^ space^ ^null
方法:
array_walk($officials_arr,function($v)use(&$officials){if(strlen($v)){$officials[]=trim($v);}});
var_export($officials);
输出:
array ( 0 => 'off1', 1 => 'off2', 2 => 'off3', )
故障:
array_walk( // iterate each element in the input array
$officials_arr, // input array
function($v) // temporary variable name for each element
use(&$officials){ // declare the output array, & means "modifiable"
if(strlen($v)){ // check if element value has any characters
$officials[]=trim($v); // push qualifying value into output array
}
}
);