一旦满足特定条件,是否有方法阻止内爆?我在任何文档中都找不到任何内容。这段代码产生的输出如下:
page ---> page ---> $goal ---> page ---> $goal
page ---> $goal ---> page ---> page
我希望它只运行到第一个$目标出现,然后移动到下一行,所以它是最后一个这样的:
page ---> page ---> $goal
page ---> $goal
这是我的代码中有内爆的部分。我厌倦了在回声前稍作停顿地坚持if语句。。但这并没有起到什么作用。
$goalpage = "leadfactory.ca/analytics/goal.php";
$html = "<table>";
$html .= "<tr><th align='left'>PAGE PATHS HITTING GOAL.PHP</th></tr>";
$paths = array();
$sql = "SELECT cookie_uid, page_url FROM pageviews WHERE cookie_uid ORDER BY rowid";
$result = mysqli_query($conn, $sql);
$got_rows = mysqli_num_rows($result);
if ($got_rows) {
while ($row = mysqli_fetch_array($result)) {
// Create an array for the cookie_uid if it doesn't exist yet
if ( ! array_key_exists($row['cookie_uid'], $paths) || ! is_array($paths[$row['cookie_uid']])) {
$paths[$row['cookie_uid']] = [];
}
// Add to the array now that we know it exists
array_push($paths[$row['cookie_uid']], $row['page_url']);
}
foreach ($paths as $session => $page) {
if ($page == $goalpage) {
break;
}
echo "<tr><td>" . implode(' ---> ', $page) . "</td></tr>";
}
} else {
$html .= '<td colspan="2">No results</td>' . "";
}
$html .= "</table>";
echo $html;
if (!mysqli_query($conn,$sql)) {
die('Error: ' . mysqli_error($conn));
}
// Your starting array
$pages = array("page","page","page","page","page","goal","page","page",);
// Get the index of the "goal" key
// see: http://php.net/manual/en/function.array-search.php
$lastkey = array_search("goal", $pages);
// Shorten your array accordingly
// see: http://php.net/manual/en/function.array-slice.php
$pages = array_slice($pages, 0, $lastkey+1);
// Implode
implode(' ---> ', $pages);
小提琴:https://3v4l.org/CIAH5
不,你不能"停止"内爆,但你可以在内爆之前打乱你的阵列。。。
您可以这样做:
$arr[0]="page0";
$arr[1]="page1";
$arr[2]="page2";
$arr[3]="goal";
$arr[4]="page4";
echo implode(" ---> ", array_slice($arr, 0, array_search("goal",$arr)+1));
输出
page0 ---> page1 ---> page2 ---> goal
在行动中看到它https://3v4l.org/cFhv3
功能是:
function implode_with_limit($arr, $goal)
{
return implode(" ---> ", array_slice($arr, 0, array_search($goal,$arr)+1));
}