我有一个类似的数组
array
0 =>
array
'title' => string 'Last Name' (length=9)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 1
1 =>
array
'title' => string 'Title 1' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
2 =>
array
'title' => string 'Title 10' (length=7)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
3 =>
array
'title' => string 'Title 11' (length=7)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
4 =>
array
'title' => string 'Title 12' (length=7)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
5 =>
array
'title' => string 'Title 2' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
6 =>
array
'title' => string 'Title 3' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
7 =>
array
'title' => string 'Title 4' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
8 =>
array
'title' => string 'Title 5' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
9 =>
array
'title' => string 'Title 6' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
10 =>
array
'title' => string 'Title 7' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
11 =>
array
'title' => string 'Title 8' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
12 =>
array
'title' => string 'Title 9' (length=6)
'price' => string '0.0000' (length=6)
'price_type' => string 'fixed' (length=5)
'is_required' => int 0
所以问题是在数组中我有标题。当我做foreach循环时,标题显示为
LAST NAME:
Title 1:
Title 10:
Title 11:
Title 12:
Title 2:
Title 3:
Title 4:
Title 5:
Title 6:
Title 7:
Title 8:
Title 9:
正如您所注意到的,标题10显示在1之后,并且它的数字顺序不正确。如何在php中修复此问题。感谢
尝试$title=数组();foreach($product->custom_options为$key=>$row){$title[$key]=$row['title'];}var_dump(array_multi-SORT($title,SORT_DESC,$product->custom_options));
尝试将usort与strnatcmp相结合。类似这样的东西:
usort($array, function($lhs, $rhs){
return strnatcmp($lhs['title'], $rhs['title']);
});
您永远不会对数组进行排序,因为您以这种方式插入了项,所以它会以这种顺序显示,您首先需要对数组进行排列,但不能以字母数字的方式。请尝试使用另一个具有整数值的字段。
问题很可能与数组的生成有关,而不是像现在这样修复它。据我所见,你有一个标题作为第一个元素,从那时起,你就有了没有正确"排序"的元素。
在不知道确切要求的情况下,根据你发布的内容,一种"排序"的方法是:
// $data array is the existing array
$new_array = array();
foreach ($data as $item) {
if ($item['title'] == 'Last Name') {
$new_array[0] = $item;
}
else
{
$key = intval(trim(str_replace("Title ", "", $item['title'])));
$new_array[$key] = $item;
}
}
ksort($new_array);
生成的数组有一个以键0为标题的元素,其他一切都取决于"标题XX",其中XX是一个数字(取自标题元素
HTH
您可以直接使用php定义的natsort函数,该函数使用"自然顺序"算法对数组进行排序。
只需编写以下代码即可完成。
natsort($array);