使用 php 作为 strtr 的数组值


Using php as an array value for strtr

我正在尝试加载一个包含我想要执行的PHP的文件,并且我还希望能够用我选择的值替换特定的单词。

例如,我有 2 个文件,index.php 个文件和 test.php 个文件

Index.php

<?php
$stmt = $dbh->prepare("SELECT * FROM users WHERE `id` = :id");
$stmt->bindValue(":id",$_COOKIE[id]);
$stmt->execute();
$in = $stmt->fetch(PDO::FETCH_ASSOC);
function callback($buffer)
{
$ID = 'hesdfsdfsdy';
$arr = array(
    "{ID}" => ''.$in['id'].'',
    "{TITLE}" => 'Testttingggg'
);
  return (strtr($buffer,$arr));
}
ob_start("callback");
include 'test.php';
?>

一切都在工作,除了{ID}空的事实,因为它不会显示$in['id']作为值。如果我使用 $ID 而不是 $in['id']它将显示"hesdfsdfsdy"的价值。所以有些东西不太适用于$in.如果我在test.php内使用$in['id'],它可以正常工作。只是它不想与替代品一起工作。

test.php

<?php
echo '{TITLE} - '.$in["id"].';
?>

所以我的问题是,为什么我不能$in["id"]工作时使用{ID}

谢谢

您的变量$in不在callback范围内。

<?php error_reporting(E_ALL);
$id = 123;
function callback($buffer)
{
    global $id;
    return strtr($buffer, ['{ID}' => $id]);
}
ob_start('callback');
echo 'Id value: {ID}';

http://php.net/manual/en/language.variables.scope.php