3 回答
TA贡献1851条经验 获得超3个赞
在PHP中,您有不同的方法来定义array.
一种方法是通过显式设置其值来定义它,例如:
<?php
$my_array_1 = array("first" => 0, "second" => 1) // or;
$my_array_2 = array(0, 1, 2);
?>
数组可以存储混合值,因此这是有效的:
<?php
$my_array_3 = array(0, "one", 2)
?>
你的数组就像之前的数组一样:
<?php
$items_arrays = array($request['itemsArray'], true);
?>
PHP没有参数,只有添加的项目,因此您放在末尾的只是数组的第二个元素 。 https://www.php.net/manual/en/function.array.phparray()true
基于此,您的dd输出与定义数组时添加的内容完全相同:
array:2 [
0 => "{"1":[2],"2":[1,3]}" // this is the string from $request['itemsArray']
1 => true // this is the second element you added
]
我认为你的问题是你需要解析string你在$request['itemsArray'].
所以,首先:
public function itemsStore(Request $request)
{
$json = json_decode($request['itemsArray']);
// $json is now an associative array in PHP
// something like: array(1 => array(2), 2 => array(1, 3))
// $items_arrays = array($request['itemsArray'], true);
// dd(items_arrays);
}
然后你需要展平这个关联数组:
public function itemsStore(Request $request)
{
$json = json_decode($request['itemsArray']);
// $json is now an associative array in PHP
// something like: array(1 => array(2), 2 => array(1, 3))
$items_arrays = [];
foreach(json as $key1 => $val1) {
foreach($val1 as $key2 => $val2) {
$items_array[] = array($key1 => $val2);
}
}
// $items_arrays = array($request['itemsArray'], true);
dd(items_arrays);
}
(json_decode有可选参数:https://www.php.net/manual/en/function.json-decode.php)
当然,您应该$request在使用它之前检查 - 身份验证和验证很重要!
抱歉,如果语法不正确 - 我已经一年多没有使用 PHP 了,并且用心编写了示例(没有检查)。但这个想法肯定是正确的:
从请求中获取数据(验证数据!这不是流程所必需的,但生产环境需要!)
将其从字符串格式转换为 PHP 数组
在最终数组中读取它(因为您最终需要它)
将最终的格式存入数据库
TA贡献2037条经验 获得超6个赞
您需要为动态选择指定一些名称。例如,如果您有一个属性列表 [尺寸,颜色],您可以执行以下操作
...
...
在服务器端您将收到一个数组 param attr[]
$attr = 请求()->attr;
它应该看起来像 $attr['size'] => [ 您选择的尺码] $attr['color'] => 您选择的颜色。
您可以转储来观看表格。
我希望它有帮助,请告诉我。
TA贡献1806条经验 获得超5个赞
尝试这个替代方案
确保在 html 中将 name 属性设置为如下所示的数组
<select multiple="multiple" name="sizes[]" id="sizes">
然后要存储它,您可以将其放入控制器中,例如
$sizes = $request->input('sizes');//it will give you string separated by commas
$sizes = explode(',', $sizes);// to separate it explode the string
// save it to database
同样,对于其他输入(例如多选颜色输入),您可以使用上述步骤
- 3 回答
- 0 关注
- 134 浏览
添加回答
举报