【问题标题】:String to array conversion in phpphp中字符串到数组的转换
【发布时间】:2017-10-13 20:05:17
【问题描述】:

我从 ajax 得到字符串,并在 url 中将字符串传递为 1,2,3,4,5,6

使用爆炸功能后, 即$explode_id = explode(',', $request->data); 我得到的输出为 ["1","2","3","4","5","6"]

但我希望数据为: [1,2,3,4,5,6]

我如何获得它? 它不应该像 ["1,2,3,4,5,6"] 因为我想比较中的数据:

  $product_id = Product::where('name', 'like','%'.$main.'%')->where('id', $explode_id)->pluck('id');

我在这里得到了答案。 我正在传递我想在 URL 中匹配的 id,例如

$("input[type='checkbox']").click(function() {
  if ($(this).is(':checked')) {
   var days = $(this).val();
   $.ajax({
        type: "get",
        url: '/getcreatedat',
        data: { 'days': days },
        success: successFunc,
            error: errorFunc
        });
        function successFunc(data, status) {
          var pageURL = $(location).attr("href");
          window.location.href = pageURL+ '/' +data;
        }   
        function errorFunc(xhr, error) {
             console.log(error);
        }
    }
});

下次我点击该功能时: url 传递 id 的两倍时间

【问题讨论】:

标签: php laravel


【解决方案1】:

您可以使用str_replace('"','',$string[$i]); 在每个数组元素的 for 循环中,否则您可以将其作为

$intVal = (int)$string[$i];

在for循环中

【讨论】:

  • 我用过。但是输出没有变化
  • " 不是输出["1","2","3","4","5","6"]的字符串部分
  • 我已经编辑了答案。第二种方法你试过了吗?
【解决方案2】:

你可以json_decode它。

$explode_id = json_decode($request->data, true);

另外,如果您尝试执行IN() 条件,您可以使用:

->whereIn('id', $explode_id);

【讨论】:

  • 我认为这个解决方案比explode更好
【解决方案3】:

@Kayal 尝试使用 array_map() ,如下所示:

<?php
    $explode_id = array_map('intval', explode(',', $request->data));

【讨论】:

  • 非常感谢。你让我的一天变得特别
  • 我还有一个问题
  • @Kayal 你把问题转向错误的方式,以前和现在的情况是不同的,我真的建议你用你的完整 ajax 代码提出一个新问题,并提供更多解释,因为你的问题不是足以回答您的问题
【解决方案4】:

我会这样做,试试这个......

 $a = "1,2,3,4,5";
 $b= preg_split("/[,]/",$a);
 print_r($b);

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多