GetLastEr-6ren">
gpt4 book ai didi

php - 无法解析 sphinx/php 中的匹配结果

转载 作者:行者123 更新时间:2023-11-29 10:30:06 25 4
gpt4 key购买 nike

如何在php中解析sphinx返回的以下数组

php代码

if ( $result === false ) {
echo "Query failed: " . $cl->GetLastError() . ".\n";
}
else {
if ( $cl->GetLastWarning() ) {
echo "WARNING: " . $cl->GetLastWarning() . "<br>";
}

if ($result['0'] > 0) {
// print_r($result['0']['attrs']);
$words[] = $result['0']['matches'];
foreach ($words as $val) {
echo "=> " . $val['keyword'] . $val['ref'];
}
} else {
echo 'No results found';
}
}

Array
(
[0] => Array
(
[error] =>
[warning] =>
[status] => 0
[fields] => Array
(
[0] => keyword
[1] => ref
)

[attrs] => Array
(
[keyword] => 7
[ref] => 7
)

[matches] => Array
(
[25367434949034415] => Array
(
[weight] => 1643
[attrs] => Array
(
[keyword] => hunting
[ref] => activity
)

)

)

[total] => 1
[total_found] => 1
[time] => 0.000
[words] => Array
(
[hunt] => Array
(
[docs] => 1
[hits] => 1
)

)

)

)

我想解析“匹配”数组及其子数组值,例如关键字、引用等。

最佳答案

让我们集中精力讨论这一点

    if ($result['0'] > 0) {
$words[] = $result['0']['matches'];
foreach ($words as $val) {
echo "=> " . $val['keyword'] . $val['ref'];
}
}

首先,结果不是整数,因此不应该真正将其作为一个进行比较(尽管猜测它可能有效)

个人建议检查实际匹配 - 并使用空,这在数组上工作得很好......

    if (!empty($result['0']['matches'])) {

然后,由于某种原因,您将匹配项添加到数组中(这就是 $arry[] = 的作用,它实际上是“推送”)

...但也没有分配给变量的点,因为只使用它一次(在 foreach 中)

...另外,通常 document_id 是匹配数组的索引,因此公开它。

        foreach ($result['0']['matches'] as $doc_id => $val) {

最后,现在有了匹配项,需要 attors 数组中的属性。所以类似

            $a = $val['attrs'];
echo $doc_id." => ".$a['keyword'].", ".$a['ref']."<br>\n";
<小时/>

把它们放在一起......

    if (!empty($result['0']['matches'])) {
foreach ($result['0']['matches'] as $doc_id => $val) {
$a = $val['attrs'];
echo $doc_id." => ".$a['keyword'].", ".$a['ref']."<br>\n";
}
}

关于php - 无法解析 sphinx/php 中的匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com