我有一个数组集合,它同时包含数字索引和非数字索引。我想取消所有数字索引。
我的数组就是这样。
Array
(
[554] => Array
(
[0] => 554
[1] => Jiaqi Zheng
[2] => Female
[3] => 28
[4] => Table Tennis
[5] =>
[6] =>
[7] =>
[8] =>
[rank] => 554
[athlet_name] => Jiaqi Zheng
[gender] => Female
[sport] => Table Tennis
)
[555] => Array
(
[0] => 555
[1] => Zach Ziemek
[2] => Male
[3] => 23
[4] => Athletics
[5] =>
[6] =>
[7] =>
[8] =>
[rank] => 555
[athlet_name] => Zach Ziemek
[gender] => Male
[sport] => Athletics
)
)
在这里,我必须取消所有数字索引。
我像这样使用unset,它对我来说很好用。
unset(
$history_years_wise_country_wise_details_arr[ $history_years_wise_country_wise_details_info[0]][0],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][1],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][2],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][3],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][4],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][5],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][6],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][7],
$history_years_wise_country_wise_details_arr[$history_years_wise_country_wise_details_info[0]][8]
);
有什么办法可以减少代码行?这里0到8是一个系列。
我可以在一行代码中取消设置所有索引,因为它们都是数字?
是否可以改用正则表达式?
我想要类似的东西
unset(
$history_years_wise_country_wise_details_arr[ $history_years_wise_country_wise_details_info[0]][anything_which_will_take_index_from_0_to_8]);
有什么建议吗?
谢谢
答案 0 :(得分:3)
您可以将array_filter()
函数与is_string()
函数一起用作其回调函数:
$array = array_filter($array, 'is_string', ARRAY_FILTER_USE_KEY);
答案 1 :(得分:2)
使用循环。
foreach ($array as $key => $value) {
if (is_numeric ($key)) {
unset($array [$key]);
}
}
或使用array_filter
$filtered = array_filter(
$array,
function ($key) {
return !is_numeric($key);
},
ARRAY_FILTER_USE_KEY
);
答案 2 :(得分:1)
您应该将foreach
循环与is_numeric
函数一起使用
foreach ($your_array as $key => $value) {
if (!is_numeric($key)) {
unset($arr[$key]);
}
}
我认为不需要任何正则表达式
答案 3 :(得分:1)
由于slave = ModbusTcpSlave.CreateTcp(slaveAddress, slaveTcpListener);
中有array
,因此首先需要使用array_map()
,然后使用array_filter()
遍历数组,
将array
视为您的$array
:
array