PHP: 构建一个 URL 编码,而值存在于多数组中
PHP: Build a URL encoded while a value exists in multi array
我的目标是:
如果这些数组中的值与文件的扩展名匹配,那么我可以构建一个漂亮的 URL 编码字符串,我可以使用 http_build_query()
将其附加到 url功能。如果找不到匹配项,则 return 没有。
各种方法都试过了,还是不行,如下代码。你能检查一下哪部分是错的吗?。
$name = 'myfile.mp4';
$list = array(
'video' => array('3gp', 'mkv', 'mp4'),
'photo' => array('jpg', 'png', 'tiff')
);
// File Ext Check
$ext = (strpos($name, '.') !== false) ? strtolower(substr(strrchr($name, '.'), 1)) : '';
$type = null;
$find = $ext;
array_walk($list, function ($k, $v) use ($find, &$type)
{
if (in_array($find, $k))
{
$type = $v;
$data = array();
switch ($type)
{
case 'video':
$data['title'] = 'video';
$data['description'] = 'my video';
break;
case 'photo':
$data['title'] = 'photo';
$data['description'] = 'my photo';
break;
}
}
else {
echo "not both!.";
exit;
{
});
if ($type == 'video') {
$link = 'https://www.video.com' . http_build_query($data);
}
else
if ($type == 'photo') {
$link = 'https://www.photo.com' . http_build_query($data);
}
echo $link;
谢谢...
你$data
是在array_walk()
范围内设置的,但在array_walk()
范围外没有定义。所以在http_build_query($data)
这里$data
还没有定义
您可以在use()
中引用$data
,然后在array_walk()
之后,您可以使用它的值。在您的代码中,您使用 in_array()
检查列表中的文件类型,为了提高性能,我建议您查看此 .
我的目标是:
如果这些数组中的值与文件的扩展名匹配,那么我可以构建一个漂亮的 URL 编码字符串,我可以使用 http_build_query()
将其附加到 url功能。如果找不到匹配项,则 return 没有。
各种方法都试过了,还是不行,如下代码。你能检查一下哪部分是错的吗?。
$name = 'myfile.mp4';
$list = array(
'video' => array('3gp', 'mkv', 'mp4'),
'photo' => array('jpg', 'png', 'tiff')
);
// File Ext Check
$ext = (strpos($name, '.') !== false) ? strtolower(substr(strrchr($name, '.'), 1)) : '';
$type = null;
$find = $ext;
array_walk($list, function ($k, $v) use ($find, &$type)
{
if (in_array($find, $k))
{
$type = $v;
$data = array();
switch ($type)
{
case 'video':
$data['title'] = 'video';
$data['description'] = 'my video';
break;
case 'photo':
$data['title'] = 'photo';
$data['description'] = 'my photo';
break;
}
}
else {
echo "not both!.";
exit;
{
});
if ($type == 'video') {
$link = 'https://www.video.com' . http_build_query($data);
}
else
if ($type == 'photo') {
$link = 'https://www.photo.com' . http_build_query($data);
}
echo $link;
谢谢...
你$data
是在array_walk()
范围内设置的,但在array_walk()
范围外没有定义。所以在http_build_query($data)
这里$data
还没有定义
您可以在use()
中引用$data
,然后在array_walk()
之后,您可以使用它的值。在您的代码中,您使用 in_array()
检查列表中的文件类型,为了提高性能,我建议您查看此