On some pages, i receive the error:
PHP Notice: Undefined offset: 1 in /var/www/example.com/includes/head.php on line 23
Here is the code:
if ($r)
{
list($r1, $r2)=explode(" ", $r[0],2);
$r1 = mb_strtolower($r1);
$r3 = " ";
$r2 = $r3.$r2;
$r[0] = $r1.$r2;
$page_title_f = $r[0]." some text";
$page_title_s = "some text ";
$page_title = $page_title_s.$page_title_f;
}
Line 23 with error:
list($r1, $r2)=explode(" ", $r[0],2);
Could you help to understand what could be the problem?
Update
Thanks all for the help! I partially solved the problem.
$r
is row in the database.
The script takes a string and starts to manipulate. Converts uppercase letters to lowercase. And as I understand it, the string must have a space otherwise gets out an error "Undefined offset". Because the script tries to find the first space, and then merge the word before the first space, and the space together with everything that appears after a space. (: I don't understand why he does and there is no way out of this situation if the space in the string no, he just throws an error. ): In general it is a very old and poor engine web store called Shop-Script. Post a full listing of the file, maybe it will be clearer.
The undefined index error you are receiving is because the offset that you're trying to explode in the variable (
$r
) doesn't exist.You can check what
$r
is by doing the following:or
You'll need to show what
$r
holds before debugging this issue further.But a guess would be that your
$r
variable is a string that you're trying to explode, but you're trying to access it as an array.What happens if you explode it like this:
When supplied with two variables,
list()
will need an array with at least 2 items.However, as the error you mentioned indicates, your
explode()
call seems to return an array with only one item.You will have to check the contents of
$r[0]
to make sure it actually contains your splitting character or manually assign$r1
and$r2
with sanity checks.Try:
If
$r[0]
doesn't contain 2 words, your code will get an error becauseexplode()
will return an array with just one element, and you can't assign that to two variables. This code tests whether the word exists before trying to assign it.My answer is not specific to your code. For others who get this error while trying to use specific elements of array you created, try indexing your elements while creating the array itself. This helps you to explode/print a specific element/do whatever you want with the array.