gpt4 book ai didi

PHP foreach 获取表值并更改

转载 作者:行者123 更新时间:2023-11-29 07:27:53 26 4
gpt4 key购买 nike

情况如下,我正在从 WordPress 插件数据库获取数据。我需要从数据库中获取“产品”,找到“名称”值,从中删除一些字符,然后最后按“名称”长度对其进行排序。这是正在发生的事情

    //The plug in queries the database
$products = $product->getModelsNames($where="", $orderBy='order by name', $limit=null);

//I added this to take that query and make changes to the 'name' field
foreach ($products as $p) {

//Characters I need removed
$characters = array("a", "b", "c", "d", ".", "-");
$p->name = str_replace($characters, "", $p->name);

//Re sort by name now without characters and save back to $products. not sure what to do here
}

//now start the loop for the products
<?php foreach($products as $p): ?>

主要问题是我的产品名称如下:8.2-1、8.2-2、8.2-2-A、8.2-10 等,但我无法让它们正确排序。我认为唯一的方法是删除所有字符以仅包含数字,然后按长度排序,否则我会列出我的产品,如 8.2-1, 8.2-10, 8.2-2, 8.2-2-A8.2-1、8.2-2、8.2-10、8.2-2-A。最重要的是,我需要在第二个循环中回显名称,就像删除字符之前一样。不知道如何完成这件事。看起来很简单,因为产品通常按数字和字符排列,但无法正确排序。

最佳答案

您正在寻找的称为自然排序。 PHP has a function for this :

$products = array(
'8.2-10',
'8.2-2',
'8.2-1',
'8.2-2-A'
);
natsort($products);
foreach ($products as $product) {
echo $product . "<BR>";
}

输出:

8.2-1
8.2-2
8.2-2-A
8.2-10

编辑!忽略了 $products 实际上是一个对象数组的事实。您可以使用不同的技术 strnatcmp :

usort($products, function($a, $b) {
return strnatcmp($a->name, $b->name);
});

请注意,如果您出于某种原因想保留相同的键,只需将其更改为 uasort 即可。

关于PHP foreach 获取表值并更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com