php notContainedIn无法识别数组参数
问题描述:
我遇到了一个问题,其中下面的工作不正常,因为我认为它应该。php notContainedIn无法识别数组参数
// this will not work and $usernames appears empty
$usernames = "\"user1\", \"user2\"";
$query->notContainedIn("username", [$usernames]);
// this does work
$user1 = "user1";
$user2 = "user2";
$query->notContainedIn("username", ["$user1", "$user2"]);
感谢
答
根据https://parse.com/docs/php_guide#queries你需要提供一个数组,$用户名是一个字符串。通过使用短数组符号,即方括号,您已经创建了一个只有一个元素的数组,即字符串。你需要的是一个有两个元素的数组,对应于两个感兴趣的值。
如果由于某种原因,您的数据仅适用于此类型的格式化字符串,那么您需要将其转换为数组。至少有两种方法可以做到这一点:
<?php
$usernames = explode(",",str_replace("\"","","\"user1\",\"user2\""));
?>
这并不像看起来那么复杂。代码用空字符串替换包含每个值的引号。然后,通过指示逗号是分隔符,将字符串分解为两部分。虽然我从来没有使用Parse的工作,我希望你可以在$现在的用户名查询替换第二个参数,如下所示:
<?php
$query->notContainedIn("username", $usernames);
不要使用方括号或您将创建一个多维数组,其第一个元素包含数组$ $ username。说字符串转换为数组的
替代方式:
<?php
$string = "\"user1\",\"user2\"";
$tok = strtok($string, "\",");
$usernames = null;
while ($tok !== false) {
$usernames[] = "$tok";
$tok = strtok("\",");
}
$用户名现在包含就像我提出的以前的解决方案两个值。虽然第二种解决方案涉及更多,但请注意,它只使用一个函数而不是两个函数,因此可能会产生更快的结果。您可以尝试这两种解决方案,对其进行基准测试,然后选择您认为具有卓越性能的解决方案。
希望这会有所帮助。
谢谢沙龙,它非常完美! – Jason 2014-11-21 10:55:14