Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为字符串/文件名创建组?_Php_Algorithm_Hash_Amazon Web Services_Amazon Cloudfront - Fatal编程技术网

Php 如何为字符串/文件名创建组?

Php 如何为字符串/文件名创建组?,php,algorithm,hash,amazon-web-services,amazon-cloudfront,Php,Algorithm,Hash,Amazon Web Services,Amazon Cloudfront,好的,我是stackoverflow的新手 开发一个电子商务网站,我有多达50个独特的图像在主页上,需要加载。我正在使用Amazon CDN处理我的图像,所有这些文件都位于一个具有唯一域的存储桶中 我希望将多个域映射到此存储桶。但是,对于每个映像,我应该能够在运行时找到上次为其提供服务的域,以便对缓存进行最佳优化。我的想法是有一个函数func(filename),它可以为同一个文件名每次返回0-9之间的值。这可以用于域名 我不希望func像散列一样很重,在这种情况下,我希望碰撞而不是避免碰撞 一

好的,我是stackoverflow的新手

开发一个电子商务网站,我有多达50个独特的图像在主页上,需要加载。我正在使用Amazon CDN处理我的图像,所有这些文件都位于一个具有唯一域的存储桶中

我希望将多个域映射到此存储桶。但是,对于每个映像,我应该能够在运行时找到上次为其提供服务的域,以便对缓存进行最佳优化。我的想法是有一个函数func(filename),它可以为同一个文件名每次返回0-9之间的值。这可以用于域名

我不希望func像散列一样很重,在这种情况下,我希望碰撞而不是避免碰撞

一个简单的方法是使用intval(文件名),然后使用最低有效位。然而,我不确定这是否是一个好的解决方案,以及价差是否平衡


有什么建议吗?

像这样简单的建议怎么样:

function customHash($str) {
    $hash = 0;

    for ($i = 0; $i < strlen($str); $i++) {
        $hash += ord($str[$i]);
    }

    return $hash % 10;
}
函数customHash($str){
$hash=0;
对于($i=0;$i

您可以通过多种方式对此进行优化,例如使用iconv_strlen()正确处理utf-8字符串,而不是整个长度,
$len=max(6,$strlen)可以使用(虽然性能提升并不显著…。

谢谢。。。。我使用了非常类似的东西,只使用了最后两个字符。(文件扩展名除外。