
- You are not logged in. | Login
March 7, 2007 1:55 pm
- steven9x
- Member


Massives -> array_splice -> are duplicated
Hi! I have such a trouble. I make a class and in it
var $id;
var $name;
In the initialization these variables become a blank massive:
$this->$id = array();
$this->$name = array();
Further working with class I call function of this class containing following code:
array_splice($this->$id, count($this->$id), 0, $newId); array_splice($this->$name, count($this->$name), 0, $newCategoryName);
where $newId and $newCategoryName are the values which should be added to the massives.
Everything would be all right but accomplishing of the last two strings results into increasing a massive twice, i.e. after the accomplishment we have:
count($this->$id) = 2
count($this->$name) = 2
though it should be:
count($this->$id) = 1
count($this->$name) = 1
Why is it so?
Before array_splice another code is accomplished, perhaps, this also should matter:
$newId = 0;
if (count($this->$id) > 0) {
$newId = max($this->$id);
}
$newId += 1;PHP 4.5 @ windows XP
P.S. Sorry if my explanations aren’t clear…
March 7, 2007 1:59 pm
- biopd42
- Member


Re: Massives -> array_splice -> are duplicated
As I understand you have some programming experience… In what language?
March 7, 2007 2:09 pm
- steven9x
- Member


Re: Massives -> array_splice -> are duplicated
Sure. In ASP, ASP .NET, VB, VB .NET, Delphi, C#, )
March 7, 2007 2:15 pm
- biopd42
- Member


Re: Massives -> array_splice -> are duplicated
Then I don’t understand your phrase
Before array_splice another code is accomplished, perhaps, this also should matter
Why cannot you check on your own if it matters or not?
Why cannot you write a text example without classes, methods and ‘another codes’?
Why don’t you reduce the number of unknown values in the task by minimizing them?
As to your question…
Frankly speaking, I didn’t understand it completely…
$newId and $newCategoryName are the values which should be added to the massives
If you need to add
1) why such an original function as array_splice is used for it?
2) why are you surprised with the fact that massive size increased?
March 7, 2007 2:21 pm
- steven9x
- Member


Re: Massives -> array_splice -> are duplicated
Why cannot you check on your own if it matters or not?
I’ve checked it:
$id = array();
$name = array();
$newId = 0;
if (count($id) > 0) {
$newId = max($id);
}
$newId += 1;
array_splice($id, count($id), 0, $newId);
array_splice($name, count($name), 0, "some text ");
echo count($name);It functions properly, count($name) = 1.
1) why such an original function as array_splice is used for it?
I’m new to PHP and haven’t studied all the functions yet. If there are some other functions, show them to me and I will use them.
2) why are you surprised with the fact that massive size increased?
I’m surprised with the fact size of each massive in the object increases by each call of array_splice i.e. the same code placed within class returns count($name) = 2 instead of count($name) = 1:
array_splice($id, count($id), 0, $newId); array_splice($name, count($name), 0, "some text");
As you can see I insert new $newId value into $id massive and in the next string $name massive is also a new value. Within class after accomplishment of the first string:
array_splice($id, count($id), 0, $newId);
$name massive also increases somehow?!
Sure, I wrote like this as well:
array_splice($id, count($id), 0, $newId); $this->$name[count($this->$name)] = "some text ";
And it works. But is it correct? Will I have any problems with it in the future? And why all the massives increase?
Last edited by steven9x (March 7, 2007 2:22 pm)


