对PHP数组的更改不是;粘住;

对PHP数组的更改不是;粘住;,php,arrays,scope,Php,Arrays,Scope,好的,我正在做一些数据挖掘的工作,但是我在循环中对数组进行了更改(通过覆盖以前的数组值),它们表明它们已经被更改了,但是一旦我离开了一个更大的循环,值就会变回原来的值 举个例子可能更容易: 它是这样开始的,将数组的一堆部分转换为单词“匹配” 现在,如果我要立即转储数组的值,它将显示一些值已更改为“匹配”(即,在更改值之后,我将回显数组槽,并将其值显示为“匹配”),但是在我跳出循环后,数组将更改回其原始内容 以下是代码的压缩版本: //i've got this big loop for doin

好的,我正在做一些数据挖掘的工作,但是我在循环中对数组进行了更改(通过覆盖以前的数组值),它们表明它们已经被更改了,但是一旦我离开了一个更大的循环,值就会变回原来的值

举个例子可能更容易:

它是这样开始的,将数组的一堆部分转换为单词“匹配”

现在,如果我要立即转储数组的值,它将显示一些值已更改为“匹配”(即,在更改值之后,我将回显数组槽,并将其值显示为“匹配”),但是在我跳出循环后,数组将更改回其原始内容

以下是代码的压缩版本:

//i've got this big loop for doing the main work
do {
            //Set dat ticker
            $q = 0;

            // Run through entire previous scrape array to check for matches and mark them as unchanged
            do {
            if ($itemTitle[$i] == $prodURLS[$q]) {
                $prodURLS[$q] = "MATCH";
                echo "When the value is printing immediately it shows that it's changed: ".$prodURLS[$q]."<br>";
            }
            $q++;
            } while ($q < $urlArraySize);
$i++;
} while ($i < $itemtitleArraySize); 
//我有一个大循环来完成主要工作
做{
//SETDAT自动售检票机
$q=0;
//运行之前的整个刮取数组以检查匹配项,并将它们标记为未更改
做{
如果($itemTitle[$i]==$prodURLS[$q]){
$prodURLS[$q]=“匹配”;
echo“当值立即打印时,显示它已更改:“.prodURLS[$q]”“
”; } $q++; }而($q<$urlArraySize); $i++; }而($i<$itemtitleArraySize);
//如果我尝试在这里打印变量,它将恢复为我将其更改为“匹配”之前的状态
打印(prodURLS)

通过运行代码,按如下方式设置变量,它对我很有用:

$prodURLS = array('a','b','c');
$itemTitle = array('a');
$urlArraySize = count($prodURLS);
$itemtitleArraySize = count($itemTitle);
$i = 0;
我的建议仅包含这一数量的信息,包括:

  • 如madth3所示,提供更多上下文信息
  • 检查设置/检查值的范围。您可能需要
    &
    运算符通过引用传递变量,或者需要
    全局
    关键字使用全局变量
  • 要使用
    foreach
    循环,它将使代码更小,更易于阅读。此外,您不需要计算数组的大小,还具有其他优点,例如在使用关联数组时。同样,通过引用使用变量时要小心。例如:

    foreach ($itemTitle as $item) {
        foreach ($prodURLS as &$prod) {
            if ($item == $prod) {
                $prod = 'MATCH';
            }
        }
    }
    unset($prod); //Unset variable set by reference if you are going to use it later on!
    
  • 此外,您可能会发现一些有用的php数组函数,如。请查看网页上的PHP手册

真的,仅仅从您提供的代码就没有什么可说的了


祝你好运。

压缩代码没问题,但我想看看
$itemTtle
$prodURLS
从何处获取它们的值会很有用。这是从函数中调用的吗?e、 g.
do_work($itemTitle,$prodURLS)