Php 将字符串拆分为数组,并根据其字母指定值?
我不是要求你为我编写代码或其他任何东西,代码片段或只是为我指出正确的方向会对我有很大帮助 这就是我想做的,你有“abcdefg”这个词 我希望它将字符串分割成一个数组(或任何最有效的?),然后根据存储到数组中的字母分配一个值。(根据字母表,a=1,b=2,c=3,z=26) 所以abcdefg会变成Php 将字符串拆分为数组,并根据其字母指定值?,php,arrays,Php,Arrays,我不是要求你为我编写代码或其他任何东西,代码片段或只是为我指出正确的方向会对我有很大帮助 这就是我想做的,你有“abcdefg”这个词 我希望它将字符串分割成一个数组(或任何最有效的?),然后根据存储到数组中的字母分配一个值。(根据字母表,a=1,b=2,c=3,z=26) 所以abcdefg会变成 $foo("a" => 1, "b" =>2, "c" => 3, etc..); 但显然,如果“abcdefg”是“zaj”,那么数组将是“z”=>26,“a”=>1,“j”=
$foo("a" => 1, "b" =>2, "c" => 3, etc..);
但显然,如果“abcdefg”是“zaj”,那么数组将是“z”=>26,“a”=>1,“j”=>10
基本上,将一串字母转换成按字母顺序排列的num值sorta?实现这一点的步骤
- 生成字母表数组(字母表从索引1开始)
- 获取要生成为数组的值
- 用
stru Split
- 使用
construct在使用foreach
array\u search
- 找到时,只需抓取它们的键和值并将其放入新数组中
您需要的功能包括:
使用这些函数,您可以在非常少的代码行中解决此问题。我已经知道str_split,但是我遇到了一个问题,即根据它是什么字母来分配值。我将再次查看php文档,可能我遗漏了什么。@user3106858使用
ord
您可能需要使用strtolower
以及从结果中减去96。我也注意到了这一点。再次感谢。这有点让我困惑,但我会看看我能做些什么@user3106858ord
的结果是ascii码,因此您需要减去96使其按a=1、b=2等顺序排列。执行此类操作时,典型的代码片段类似于:ord($letter)-ord('a')
。
<?php
$alph[]='Start';
foreach(range('a','z') as $val)
{
$alph[]=$val;
}
$makethisvalasarray='zaj';
$makethisvalasarray=str_split($makethisvalasarray);
foreach($makethisvalasarray as $val)
{
$newarr[$val]=array_search($val,$alph);
}
print_r($newarr);
Array
(
[z] => 26
[a] => 1
[j] => 10
)