使用php作为strtr的数组值

使用php作为strtr的数组值,php,replace,Php,Replace,我正在尝试加载一个包含PHP的文件,我希望执行该文件,并且我还希望能够用我选择的值替换特定的单词 例如,我有两个文件,index.php和test.php <?php $stmt = $dbh->prepare("SELECT * FROM users WHERE `id` = :id"); $stmt->bindValue(":id",$_COOKIE[id]); $stmt->execute(); $in = $stmt->fetch(PDO::FETCH_A

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

例如,我有两个文件,
index.php
test.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';
?>
<?php
echo '{TITLE} - '.$in["id"].';
?>
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';
?>
<?php
echo '{TITLE} - '.$in["id"].';
?>
所以我的问题是,为什么在使用
{id}
时,[“id”]中的
$不能工作


谢谢

您的变量
$in
不在
回调的范围内

<?php error_reporting(E_ALL);

$id = 123;

function callback($buffer)
{
    global $id;
    return strtr($buffer, ['{ID}' => $id]);
}

ob_start('callback');

echo 'Id value: {ID}';

$stmt->bindValue(“:id”,$\u COOKIE[id])需要是
$stmt->bindValue(“:id”,$\u COOKIE['id'])。另外,我认为您需要添加
session_start()@Anant之后的每个
.php
页面顶部的code>,谢谢回复。我已经修好了,谢谢。尽管我仍然遇到同样的问题what
var\u dump($in)说什么?检查并向我们展示最好放在哪里?就在
$in=$stmt->fetch(PDO::fetch_ASSOC)之后并检查其在浏览器上显示的内容。