Php 使用concat从单独的单词中提取首字母

Php 使用concat从单独的单词中提取首字母,php,mysql,Php,Mysql,我的客户问我是否可以在项目中添加一个根据产品名称和数量生成的产品代码。 每个示例:如果产品为三星Grand 2,数量为30,则代码应类似于SG2-30。 我的项目是用PHP、MySQL和一些JS脚本编写的 首先,这是一种在商店里对产品进行编码的实用方法吗 如果是,如何在PHP中实现 我试着用concat压缩两个变量,但我不能只提取每个单词的第一个字母 $query3 = "INSERT INTO inventory (item_name, item_code, item_

我的客户问我是否可以在项目中添加一个根据产品名称和数量生成的产品代码。 每个示例:如果产品为三星Grand 2,数量为30,则代码应类似于SG2-30。 我的项目是用PHP、MySQL和一些JS脚本编写的

首先,这是一种在商店里对产品进行编码的实用方法吗

如果是,如何在PHP中实现

我试着用
concat
压缩两个变量,但我不能只提取每个单词的第一个字母

$query3 = "INSERT INTO inventory
            (item_name, item_code, item_cat, supplier, item_location, quantity, init_price, buy_price, item_sold, date_now) 
            VALUES
            (:item_name, concat(:item_name, :quantity), :item_cat, :supplier, :item_location, :quantity, :init_price, :buy_price, :item_sold, :date)";
结果:

首先,这是一种在商店里对产品进行编码的实用方法吗

答案很简单:没有

这一方案不会阻止含糊不清的代码。例如,“Samsung Grand 2”和“Samsung Grand 2.1”将产生相同的编码(SG2)


不要使用这种编码。使用唯一的产品编号是一种很好的做法。

您可以使用下面的函数获取字符串的首字母

function get_first_letters($string)
{
  return preg_replace('/(\B.|\s+)/','',$string);
}

$str = 'Samsung Galaxy V 2.1.3';

$first_letters = strtoupper(get_first_letters($str));

echo $first_letters;
尽管创建这样的产品代码不是一个好的实践


我接受以上maxhb的答案,但他的解决方案

请尝试以下代码

$splitWords = explode(" ", "Samsung Grand 2");
$firstLetters = "";

foreach ($splitWords as $word) {
  $firstLetters .= $word[0];
}
$quantity = 30; //get your quantity from your database

$code = $firstLetters."-".$quantity; //will result SG2-30

不要将数量附加到产品标识符。数量是可变的,无论数量是多少,产品标识符在所有情况下都应该相同。如果你按照你所说的方式去做,其他问题就会出现,例如搜索和索引等

我的建议是生成一个5位数的随机整数,然后应用您在问题中讨论过的方案,例如“Samsung Grand 2”将编码为SG2-12345,“Samsung Grand 2.1”将编码为SG2-98765


所以我的答案是
产品首字母-5位随机数

也请发布您的试用代码。表的结构,以及一些样本数据。好的,我正在这样做,等等,我对这种产品编码是完全陌生的,他们是一个链接,还是一种了解更多信息的方法?他们有关于产品编码的链接吗?就是这样,我现在就试试,看看效果。我试过了,效果很好,就像iphoneapple6一样,我有IA6-13560@androidnation很高兴知道它能帮助你,而不是随机的5位数,我会选择产品名称的散列:
substr(md5('Samsung Grand 2'),0,5)
yeah@maxhb这是一个不错的选择。。目的是连接一个5位数的随机字符串。它可以是散列,也可以是随机数。任何可以用于此目的的东西